react-native navigator 不更新场景

Posted

技术标签:

【中文标题】react-native navigator 不更新场景【英文标题】:react-native navigator not updating scene 【发布时间】:2016-12-18 13:13:27 【问题描述】:

我正在尝试使用 react-native 进行导航。我正在用 2 个页面(HomePage 和 OtherPage)对其进行测试,并希望 HomePage 在我提交一些文本时能够导航到 OtherPage。

我的基本导航器 index.android.js 文件...

class MyApp extends Component 

  _renderScene = function(route, nav) 
    switch (route.index) 
          case 'HomePage':
            console.log('homepage nav')
            return <HomePage navigator=nav />
          case 'OtherPage':
            console.log('otherpagenav')
            return <OtherPage navigator=nav />
    
  


  render() 
    return (
      <Navigator
        initialRoute= title: 'My Initial Scene', index: 'HomePage' 
        renderScene= (route, nav) =>  return this._renderScene(route, nav)  
      />
    )
  

如果我通过索引和初始路由手动设置主页和其他页面,它们都可以工作。

initialRoute= title: 'My Initial Scene', index: 'HomePage'  

initialRoute= title: 'My Initial Scene', index: 'OtherPage' 

我的 HomePage.js 文件加载正常,看起来像...

class HomePage extends Component 
  constructor(props) 
    super(props);
  

  _onSubmit() 
    console.log( 'submit2', this);
    this.props.navigator.push(
            title: "Other Page",
            index: 'OtherPage',
            component: OtherPage,
            passProps:  testprop: 'someuser',
        );
  


  render() 
    return (
      <View>
        <Text>Current Scene: this.props.title</Text>
        <TextInput
          onChangeText = ( keywords ) => this.setState( keywords )
          defaultValue = 'Type a keyword'
          onSubmitEditing =  this._onSubmit.bind( this ) 
        />
      </View>
    )
  

我的测试其他页面只是

class OtherPage extends Component 
  constructor( props ) 
    super( props );
  

  componentDidMount() 
    console.log( 'otherpage component mounted');
  

  render() 
    return (
     <View><Text>Other Page</Text>
     </View>
    );
  

当我输入一些文本并提交时。我从 _onSubmit() 看到提交 console.log 所以我知道导航器被调用了。

我还看到“安装了其他页面组件”。

所以从日志上看一切正常,但我没有看到更新的场景/页面,我看到的只是更新的 console.logs。

我需要做些什么来强制它更新场景,还是不应该通过导航器推送自动发生? (我也有点不确定是否需要导航器组件,正如我在一些示例中看到的那样,但在任何地方都没有真正引用)。

【问题讨论】:

【参考方案1】:

看起来 avd 有点奇怪。我最终将 react-native 升级到 0.39.2(我认为这没有什么不同,但包括完整性)。然后我删除了avd,新建了一个(目标名称Android 6.0 Platform 6.0 API 23 Intel Atom x86_64)选中delete all user data,然后好像可以了。

希望我知道具体原因,所以如果有人有更好的答案,我很乐意接受。

【讨论】:

以上是关于react-native navigator 不更新场景的主要内容,如果未能解决你的问题,请参考以下文章

react-native navigator

使用 react-navigation 禁用返回 react-native

React-Native中导航组件react-navigation的使用

react-native填坑--react-navigation

使用 React-Native Navigation 传递数据

无法从 react-native 中的 navigation.geolocation.getCurrentPosition() 返回位置