React native - ListView行中的Binding事件

时间:2016-04-18 04:43:50

标签: react-native

我无法找到正确的方法,以便从列表视图行下的基于类的定义中触发事件。这是我到目前为止所做的事情

class SampleApp extends React.Component {

  constructor(props){
    super(props)
    this.state = {
        dataSource: ds.cloneWithRows(this._partners()),
    }

    // this._click = this._click.bind(this);
  }

 _click() {
    console.log('clicked');
  }

  _renderRow(rowData) {
    return (<TouchableHighlight onPress={() => {this._click();}}>
        <Text style={{ fontSize:18 }}>{rowData}</Text>
      </TouchableHighlight>);
  }

  render() {
    console.log('Partners: ', this._partners() )
    return (
      <View style={styles.container}>
        <ListView
         dataSource={this.state.dataSource}
         renderRow={ this._renderRow } />
      </View>
    );
  }
}
this内的{p> onPress未引用反应组件。我该如何解决?这是反应操场链接https://rnplay.org/apps/Xd-l3w

1 个答案:

答案 0 :(得分:5)

试试这个。

constructor(props){
  super(props)
  this.state = {
    dataSource: ds.cloneWithRows(this._partners()),
  }

  this._renderRow = this._renderRow.bind(this);
}

_renderRow()不包含范围。重新绑定它可以解决问题。

onPress={this._click}也可以工作,而不是将this._click放在另一个函数中。

这里是fork of your code