我如何在NavigatorIOS中使用push()函数?

时间:2017-01-21 05:55:42

标签: ios react-native

我希望通过NavigatorIOS中的函数Push push()到新的Component。这就像是:

  renderRow(rowData, sectionID, rowID) {
    var imgSource = IMAGE_URLS[rowID];
    return (
      <TouchableHighlight onPress = {() => {
        this.props.navigator.push({
          title: 'test',
          component: example,
        });    
      }}>
        <View>
          <View style={styles.row}>
            <Image 
              source={imgSource}
              style={styles.thum}
            />
            <Text style={styles.text}>
              {rowData}
            </Text>
          </View>
        </View>
      </TouchableHighlight>
    );
  }

但是当我点击TouchableHighlight时会出错。

enter image description here

在此之前我提到了这两个问题(12)。完整的代码在link

1 个答案:

答案 0 :(得分:2)

这不是绑定到renderRow()内部的类。

您必须在构造函数中绑定this this.renderRow = this.renderRow.bind(this);

或在render方法中:

 render() {
    var navStatusBarConfig = {
      style: 'light-content',
    }
    return (
      <View style={{ flex: 1, backgroundColor: '#F5FCFF'}}>
        <View styles={styles.nav}></View>
        <ListView 
          automaticallyAdjustContentInsets={false}
          contentContainerStyle={styles.list}
          dataSource={this.state.dataSource}
          pageSize={4}
          renderRow={this.renderRow.bind(this)}
        />
      </View>
    );
  }
}

至于为什么,原因如下: https://facebook.github.io/react/blog/2015/01/27/react-v0.13.0-beta-1.html#autobinding
还有一个更完整的博客,关于如何绑定this [有很多,博客和方法来绑定它]): http://blog.andrewray.me/react-es6-autobinding-and-createclass/