我正在研究一个简单的计算器应用程序来学习本机反应。我有一个显示数字按钮的按钮组件。我需要传递一个函数,以便在触摸按钮时,父级的状态将更新为新的数字。 没有绑定(this),它说this.setState是未定义的。当我在构造函数中添加bind(this)时,我得到的是我的应用程序中的空白页面。我的代码列在下面。
构造
constructor() {
super();
this.state = {
total: 0,
display: 0
};
this._displayUpdate = this._displayUpdate.bind(this);
}
一排计算器按钮:
<View style={styles.buttonRow}>
<NumButton numText={7} update={this._displayUpdate} />
<NumButton numText={8} update={this._displayUpdate} />
<NumButton numText={9} update={this._displayUpdate} />
<FuncButton funcText={'*'} />
</View>
NumButton组件:
export default class NumButton extends Component {
render() {
return (
<TouchableHighlight style={styles.buttonArea} onPress={this.props.update(this.props.numText)}>
<Text style={styles.buttonText}>{this.props.numText}</Text>
</TouchableHighlight>
)
}
}
答案 0 :(得分:3)
您的父母bind
是对的。问题在于onPress
组件中TouchableHighlight
的{{1}}。您无法添加要执行的代码,您应该将函数传递给它。您可以使用ES6箭头功能:
NumButton
}