我正在学习React Native和Redux,我在这里遇到了许多类似的问题,但我很难与我的问题联系起来.
当我在另一个方法中调用一个方法时,它会不断地返回我这个函数’不是函数,我真的不知道该怎么做.
这是我的一些代码..
import React,{ Component } from 'react'; import { Text,StyleSheet,ScrollView } from 'react-native'; import { connect } from 'react-redux'; import Panel from '../components/panel'; class Orders extends Component { displayItems(obj) { console.log('itemArr',obj); return obj.items.map(function(item){ return (<Text>{item.quantity + ' ' + item.name}</Text>) }); } renderContents() { console.log('orders',this.props.orders); if (!this.props.orders) { return <Text>Loading...</Text>; } return this.props.orders.map(function(order) { return ( <Panel title={order.id} key={order.id}> <Text> Item: {this.displayItems(order)}{'\n'} </Text> </Panel> ); }); } render() { return( <ScrollView style={styles.container}> {this.renderContents()} </ScrollView> ); } }
我不确定为什么render方法中的函数不会导致任何错误,但我的renderContents方法中的函数调用确实如此.
我很感激任何解决这个问题的建议.
这是一个约束性问题.除非另有明确说明,否则JavaScript中的函数都有自己的上下文,所以当你这样做时
原文链接:https://www.f2er.com/react/300905.htmlreturn this.props.orders.map(function(order) { return ( <Panel title={order.id} key={order.id}> <Text>Item: {this.displayItems(order)}{'\n'}</Text> </Panel>); });
这不是指向你的类,而是指向函数本身.请执行以下操作
return this.props.orders.map((order) => { return ( <Panel title={order.id} key={order.id}> <Text>Item: {this.displayItems(order)}{'\n'}</Text> </Panel>); });