React-Native <Navigator/> :如何从实例化它的 class 控制它
React-Native <Navigator/> : How do I control it from the class that instantiated it
我在我的 index.ios.js 文件中有一个这样的实例化:
render() {
return(
<Navigator
style={styles.navigator}
renderScene={this.renderScene}
initialRoute={{
component: test,
navigationBar: <NavigationBar title="home" />
}}/>
);
}
从同一个文件我有一个函数,我希望能够在导航器上触发一个动作,例如
resetStack(){
// navigator.popToTop();
}
我该如何实现?我想我必须使用一个叫做 refs 的东西,并尝试添加一个参考如下:
render() {
return(
<Navigator
ref="ref1"
style={styles.navigator}
renderScene={this.renderScene}
initialRoute={{
component: test,
navigationBar: <NavigationBar title="home" />
}}/>
);
}
然后调用它:
重置堆栈(){
// navigator.popToTop();
ref1.popToTop();
}
但这会导致错误:
找不到变量 ref1
我该如何实现?如何在子组件中触发方法?
renderScene
方法通过路由和导航器上下文调用,它允许您将导航器传递到场景组件中:
renderScene(route, navigator) {
return <ExampleScene navigator={navigator} />;
}
从 ExampleScene 中,您现在可以调用 this.props.navigator.popToTop()
。
或者,从导航器中的组件调用 Navigator.getContext(this)
:
Navigator.getContext(this).popToTop();
文档可在此处获取:https://facebook.github.io/react-native/docs/navigator.html#navigation-context
对于遇到此问题的其他人。我非常接近上面的代码,但忽略了将 this.refs.referenceName 添加到调用中,最终代码是:
render() {
return(
<Navigator
ref="ref1"
style={styles.navigator}
renderScene={this.renderScene}
initialRoute={{
component: test,
navigationBar: <NavigationBar title="home" />
}}/>
);
}
并调用它:
resetStack(){
// navigator.popToTop();
this.refs.ref1.popToTop();
}
我在我的 index.ios.js 文件中有一个这样的实例化:
render() {
return(
<Navigator
style={styles.navigator}
renderScene={this.renderScene}
initialRoute={{
component: test,
navigationBar: <NavigationBar title="home" />
}}/>
);
}
从同一个文件我有一个函数,我希望能够在导航器上触发一个动作,例如
resetStack(){
// navigator.popToTop();
}
我该如何实现?我想我必须使用一个叫做 refs 的东西,并尝试添加一个参考如下:
render() {
return(
<Navigator
ref="ref1"
style={styles.navigator}
renderScene={this.renderScene}
initialRoute={{
component: test,
navigationBar: <NavigationBar title="home" />
}}/>
);
}
然后调用它: 重置堆栈(){ // navigator.popToTop(); ref1.popToTop(); }
但这会导致错误: 找不到变量 ref1
我该如何实现?如何在子组件中触发方法?
renderScene
方法通过路由和导航器上下文调用,它允许您将导航器传递到场景组件中:
renderScene(route, navigator) {
return <ExampleScene navigator={navigator} />;
}
从 ExampleScene 中,您现在可以调用 this.props.navigator.popToTop()
。
或者,从导航器中的组件调用 Navigator.getContext(this)
:
Navigator.getContext(this).popToTop();
文档可在此处获取:https://facebook.github.io/react-native/docs/navigator.html#navigation-context
对于遇到此问题的其他人。我非常接近上面的代码,但忽略了将 this.refs.referenceName 添加到调用中,最终代码是:
render() {
return(
<Navigator
ref="ref1"
style={styles.navigator}
renderScene={this.renderScene}
initialRoute={{
component: test,
navigationBar: <NavigationBar title="home" />
}}/>
);
}
并调用它:
resetStack(){
// navigator.popToTop();
this.refs.ref1.popToTop();
}