React native 如何使用react导航从顶级应用程序页面导航到页面?
我已经在react本机应用程序的顶层创建了一个全局侦听器。每当蓝牙设备与应用程序断开连接时,我想使用NavigationActions导航到应用程序中的“SomePage” 问题是我在应用程序的不同部分(RootPage)设置了所有导航。因此,我无法访问这个.props.navigation,我通常使用它来导航应用程序中的不同页面。我不想更改在RootPage中创建的导航对象React native 如何使用react导航从顶级应用程序页面导航到页面?,react-native,react-navigation,React Native,React Navigation,我已经在react本机应用程序的顶层创建了一个全局侦听器。每当蓝牙设备与应用程序断开连接时,我想使用NavigationActions导航到应用程序中的“SomePage” 问题是我在应用程序的不同部分(RootPage)设置了所有导航。因此,我无法访问这个.props.navigation,我通常使用它来导航应用程序中的不同页面。我不想更改在RootPage中创建的导航对象 class App extends Component { componentDidMount() {
class App extends Component {
componentDidMount() {
StatusBarManager.initialStatusBarSetup();
OVTracker.initialize();
// Save with AsyncStorage
persistStore(store, { storage: AsyncStorage });
this.setupBluetooth();
}
setupBluetooth() {
global.oliveDeviceStatusChanged = aBluetoothEventEmitter.addListener('aDeviceStatusChanged', event => {
if (EventUtils.eventCodeEquals(event, 'DISCONNECTED')) {
console.log('show me navigationaction', NavigationActions)
// NavigationActions.navigate({ routeName: 'SomePage' })
}
});
}
render() {
return (
<Provider store={store}>
<RootPage />
</Provider>
)
}
}
AppRegistry.registerComponent('SomeApp', () => App);
类应用程序扩展组件{
componentDidMount(){
StatusBarManager.initialStatusBarSetup();
OVTracker.initialize();
//使用异步存储保存
persistStore(store,{storage:AsyncStorage});
这个。setupBluetooth();
}
设置蓝牙(){
global.oliveDeviceStatusChanged=aBluetoothEventEmitter.addListener('aDeviceStatusChanged',event=>{
if(EventUtils.eventcodequals(事件“断开”){
log('show me navigationaction',NavigationActions)
//导航({routeName:'SomePage'})
}
});
}
render(){
返回(
)
}
}
AppRegistry.registerComponent('SomeApp',()=>App);
如果您想尝试在首页上导航,可以尝试此操作
从'react navigation'导入{NavigationActions};
this.props.navigation.dispatch(StackActions.poptoop());
~~~~js
const YourAppContainer=createAppContainer(TopLevelNavigator);
...
{this.navigation=navigatorRef}
/>
....
这是导航调度(
导航({
罗特奈,
})
);
}
不,我说的顶层是指它是第一个加载的东西。我要访问的页面不是第一个加载的页面。另外,我没有访问this.props.navigation的权限,因为导航器堆栈是在RootPage中创建的,它比App低一级。@VK1我在查看了您的评论后修改了答案。我会把它放进去吗?RootPage不是您的容器吗?提供者是主包装器。所以我想是的,RootPage是我的容器。