将函数附加到onClick()/ onPress()

时间:2017-08-03 08:40:16

标签: javascript reactjs react-native

我有Component看起来像这样:

export default class List extends Component {
  constructor(props) {
    super(props);
  }

_onPress = (key) => {
    alert(key);
  }

_createList = () => {
     const list = Object.keys(this.state.obj).map((key, index) => {
      return (
        <TouchableHighlight
          key = {index}
          style = {style.container}
          onPress = {this._onPress(key)}
          >
          <Text>{key}</Text>
        </TouchableHighlight>
       )
     });
      return list;
   }

  render() {
    const listview = this._createList();
    return (
      <View>
        {listview}
      </View>
    )
  }
}

Ob Startup我得到三个alerts(我的对象中每个键/值对一个)。这种行为是预期的。但是,当我点击其中一个Texts/Touchables时,我没有得到alert。那是为什么?

2 个答案:

答案 0 :(得分:1)

你必须传递回调,而不是回调结果。

onPress = {event => this._onPress(key)}

答案 1 :(得分:0)

试试这个。

onPress = { () => this._onPress(key) }

使用onPress = {this._onPress(key)},onPress绑定到_onPress函数调用的结果,等于未定义。