我正在尝试在视图之间导航以在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"
/>
);
}
}
单击该按钮会出现错误。
答案 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'