导航器在React Native App中不起作用(参数0(NSNumber))

时间:2016-09-20 18:36:26

标签: react-native

我正在尝试在视图之间导航以在React Native中工作,如下所示:

newUserFlow() {
    this.props.navigator.push({
      title: "Create Account",
      component: F8InfoView,
    });
  }

<TopFiveButton
            style={styles.button}
            onPress={this.newUserFlow.bind(this)}
            caption="Create Account"
/>

但是,我在点击时遇到了这个错误:

ExceptionsManager.js:75 Argument 0 (NSNumber) of RCTNavigatorManager.requestSchedulingJavaScriptNavigation must not be null

这在以前有效,但似乎有些变化。可能是什么问题?谢谢。

调试器在例外manageR:

中引用它
  // Flow doesn't like it when you set arbitrary values on a global object
  (console: any)._errorOriginal = console.error.bind(console);
我是在打破流量吗?感谢。

编辑:

index.ios.js看起来像这样:

class nomad extends Component {
  render() {
    return (
      <NavigatorIOS
        style={styles.container}
        initialRoute={{
          title: 'Nomad',
          component: LoginScreen
        }} />
    );
  }
};

然后在LoginScreen中:

class LoginScreen extends React.Component {
  newUserFlow() {
    this.props.navigator.push({
      title: "Create Account",
      component: F8InfoView,
//      passProps: {userInfo: this.props.userInfo}
    })
  }
render() {
    return (
          <F8Button
            style={styles.button}
            onPress={this.newUserFlow.bind(this)}
            caption="Create Account"
          />
    );
  }
}

单击该按钮会出现错误。

2 个答案:

答案 0 :(得分:0)

您使用哪个版本做出反应?你确定是最后一个稳定的版本吗?我问你,因为在ExceptionsManager.js,我在第75行看不到“NSNumber”......

让我强调this question非常相似......所以你试图把

navigator.push(routes[1]);

在onPress道具内。 ?

类似的东西:

<F8Button onPress={
    () => { if (route.index === 0){ 
                    navigator.push(routes[1]); 
                } else {
                    navigator.pop(); 
                } 
          }
...
...

总结一下,您可能还需要仔细查看https://facebook.github.io/react-native/docs/navigator.html

此致

答案 1 :(得分:-1)

希望这个解决方案能帮到你一点

可能发生的问题

问题在于,一旦执行onPressevent,i索引超出了界限,因此无法找到节点。 有些东西告诉我发生这种情况是因为你试图访问一个null的引用,因为你将dropdown列表放在导航器的renderScene函数中。我遇到了同样的问题。

请考虑发布您的代码或调试findNodeHandle结果,因为一旦您将null作为节点发送,就会产生此错误。

由于React无法找到节点,错误可能是因为findNodeHandle没有将React节点作为参数。

可能是您要向事件发送空节点的问题。尝试调试您在findNodeHandle函数中获得的内容。

<强>解决方案

您必须将所有引用更改为this.refs.navigator.refs['any reference made in your code']等。

不要忘记给实际的导航器一个参考

<Navigator
ref='navigator'