不变违规:调用pop来路由不存在的路由

时间:2015-07-09 14:32:20

标签: javascript reactjs react-native

我正在使用NavigatorIOS,当我传递给初始路线的道具发生变化时,我试图通过重置为下面找到的组件来更新它们,并使用&34; componentWillReceiveProps"中的新更新道具。

    componentWillReceiveProps: function(nextProps) {
      this.refs.navigator.resetTo({
                    title: 'Home',
                    component: search,
                    backButtonTitle: 'Back',
                    passProps: {
                      api: nextProps.api,
                      slug: nextProps.slug
                   }
      });
    }

我很确定我没有正确引用这条路线,但坦率地说,我还没有找到任何关于这个问题的有用资源。

Replace()完成更新道具的工作,但我也想要它来popToTop()。替换和重置两个都采取路由对象,所以我不明白为什么replace()工作和resetTo()给我这个错误。

这是我的NavigatorIOS:

      <NavigatorIOS
            ref='navigator'
            initialRoute={
            {
              title: 'Home',
              component: search,
              backButtonTitle: 'Back',
                    passProps: {
                        api: this.props.api,
                        slug: this.props.slug
                     }

             }
           }
    />

enter image description here

2 个答案:

答案 0 :(得分:1)

如果你声明如下:

var routes = this.refs.navigator.getCurrentRoutes();

然后您可以弹出如下路线:

this.refs.navigator.popToRoute(routes[1]);

答案 1 :(得分:0)

尝试使用更多手动但限制较少的React.Navigator…navigator.immediatelyResetRouteStack()

请参阅导航器文档https://facebook.github.io/react-native/docs/navigator.html