如何在作为反应本机的prop中传递函数时绑定(this)

时间:2017-05-10 04:11:13

标签: react-native

我正在研究一个简单的计算器应用程序来学习本机反应。我有一个显示数字按钮的按钮组件。我需要传递一个函数,以便在触摸按钮时,父级的状态将更新为新的数字。 没有绑定(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>
        )
    }
}

1 个答案:

答案 0 :(得分:3)

您的父母bind是对的。问题在于onPress组件中TouchableHighlight的{​​{1}}。您无法添加要执行的代码,您应该将函数传递给它。您可以使用ES6箭头功能:

NumButton

}