React native 如何使用react导航从顶级应用程序页面导航到页面?

React native 如何使用react导航从顶级应用程序页面导航到页面?,react-native,react-navigation,React Native,React Navigation,我已经在react本机应用程序的顶层创建了一个全局侦听器。每当蓝牙设备与应用程序断开连接时,我想使用NavigationActions导航到应用程序中的“SomePage” 问题是我在应用程序的不同部分(RootPage)设置了所有导航。因此,我无法访问这个.props.navigation,我通常使用它来导航应用程序中的不同页面。我不想更改在RootPage中创建的导航对象 class App extends Component { componentDidMount() {

我已经在react本机应用程序的顶层创建了一个全局侦听器。每当蓝牙设备与应用程序断开连接时,我想使用NavigationActions导航到应用程序中的“SomePage”

问题是我在应用程序的不同部分(RootPage)设置了所有导航。因此,我无法访问这个.props.navigation,我通常使用它来导航应用程序中的不同页面。我不想更改在RootPage中创建的导航对象

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是我的容器。