android - 在 react native 的 ListView 中简单转到页面

标签 android listview react-native navigator

如何从 ListView 中单击一行并访问该内容。

我已将所有内容封装在导航器中。

renderScene(route, navigator) {
  var routeId = route.id;
  if (routeId === 'SplashPage') {
   return (
      <SplashPage
      navigator={navigator} />
   );
  }
  if (routeId === 'App') {
    return (
      <App
      navigator={navigator} />
  );
 }
}

足够简单,但是当我在应用程序页面中渲染 ListView 时,我似乎无法获得要传递 Prop 的行的正确上下文。

render() {
   return (
  <Navigator
      renderScene={this.renderScene.bind(this)}
      navigator={this.props.navigator}/>
  );
}


renderScene(route, navigator) {
 render(
    // If I run this.profilePage() from here, it works
    <ListView
    dataSource={this.state.feed}
    renderRow={this._renderRow} // need to pass the navigator here somehow?
     />
  );
}

 _renderRow(feeditem){
   return (
     <TouchableOpacity 
        onPress={this.profilePage}><Text>Test to click</Text>
    // Also tried {this.profilePage.bind(this)} - didnt work
     </TouchableOpacity>
   )
 }

 profilePage(){
   this.props.navigator.push({
      id: 'ProfilePage',
      name: 'Profile',
   });
   //'this' however is always null
 }

如何正确地将导航器上下文传递到行? 还是我做错了?

最佳答案

尝试这样的事情。将导航器分解为它自己的组件,在我看来会更容易推理。

导航组件:

var Nav = React.createClass({

  renderScene(route, navigator) {
    var routeId = route.id;
    if (routeId === 'SplashPage') {
      return ( <SplashPage navigator={navigator} /> );
    }
    // MORE ROUTES BELOW
  }

  render() {
   return (
    <Navigator
      initialRoute={{ id: 0, component: List, name: 'List' }}
      renderScene={this.renderScene.bind(this)}
      navigator={navigator} />
    );
  }

})    

列表组件:

var List = React.createClass({

  _renderRow(feeditem){
   return (
      <TouchableOpacity 
        onPress={ () => this.profilePage() }><Text>Test to click</Text>
      </TouchableOpacity>
    )
  }

 profilePage(){
   this.props.navigator.push({
      id: 'ProfilePage',
      name: 'Profile',
   });
 }

 render() {
   return (
     <ListView
        dataSource={this.state.feed}
        renderRow={this._renderRow}
      />
   )
 }
})

关于android - 在 react native 的 ListView 中简单转到页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35465021/

相关文章:

java - 如何在印度测试安卓支付应用程序

android - 带有图像和文本以及可检查属性的 ListView

javascript - 点击按钮后如何将 ListView 向下滚动到底部(例如使用 scrollToIndex )? NativeScript-Vue

react-native - 如何解决expo的 "NewAppScreen"问题(React native)

android - 如何通过一笔交易在 Firebase 上创建用户并上传数据

java - 来电弹出错误 : Unable to add window android. view.ViewRootImpl$W@e5b2272 -- 窗口类型 2003 的权限被拒绝

android - 在不启用位置服务的情况下列出 Wifi

react-native - React Native ListView - rowHasChanged 不会触发

java - Android 中图像的自定义键盘实现

android - 滚动列表一次查看一项