Javascript 如何在React Native中将createStackNavigator导出为类?
我读到,使用createStackNavigator作为组件类是可能的,我试图实现这一点,但我总是遇到一个错误 而不是这个:Javascript 如何在React Native中将createStackNavigator导出为类?,javascript,react-native,react-navigation,mobx-react,Javascript,React Native,React Navigation,Mobx React,我读到,使用createStackNavigator作为组件类是可能的,我试图实现这一点,但我总是遇到一个错误 而不是这个: 导出默认createStackNavigator({ 信息 }, { 默认导航选项:{ 已启用的手势:false } }) 我试过这个: class MessagesStack扩展了React.Component{ render(){ 常量RouteConfigs={ 信息 }; 常数导航配置={ 默认导航选项:{ 已启用的手势:false } }; const Sta
导出默认createStackNavigator({
信息
}, {
默认导航选项:{
已启用的手势:false
}
})
我试过这个:
class MessagesStack扩展了React.Component{
render(){
常量RouteConfigs={
信息
};
常数导航配置={
默认导航选项:{
已启用的手势:false
}
};
const Stack=createStackNavigator(路由图、导航器配置);
返回;
}
}
导出默认消息stack;
但我总是犯这样的错误:
Invariant Violation: Invariant Violation: The navigation prop is missing for this navigator. In react-navigation 3 you must set up your app container directly. More info: https://reactnavigation.org/docs/en/app-containers.html
因此,我试图通过添加导航道具来纠正它,如下所示:
返回;
但后来我又犯了一个新错误
TypeError: TypeError: No "routes" found in navigation state. Did you try to pass the navigation prop of a React component to a Navigator child? See https://reactnavigation.org/docs/en/custom-navigators.html#navigator-navigation-prop
这可能吗?我想这样做的主要原因是能够为mobx商店@inject并使用@observer。这样,当我在存储中更改de背景色时,它将在已注入存储并正在观察的每个堆栈上更改
编辑
我给MessagesStack打电话的地方:
导出默认CreateBoottomTabNavigator({
日堆栈:{
屏幕:DayStack,
导航选项:{…}
}
MessagesStack:{
屏幕:MessagesStack,
导航选项:{…}
}
…这里的其他堆栈。。。
}, {
initialRouteName:“DayStack”,
});
根据我对错误的理解,我认为问题不在于createStackNavigator。实际问题是,从react navigation的第3版开始,您必须手动将createStackNavigator传递到createAppContainer中,以便创建的容器可以成为react native渲染的主要组件
import { createAppContainer, createStackNavigator } from 'react-navigation';
// you can also import from @react-navigation/native
const AppNavigator = createStackNavigator(...);
// you have to pass the app navigator into app container like this
const AppContainer = createAppContainer(AppNavigator);
// Now AppContainer is the main component for React to render
export default AppContainer;
根据我对错误的理解,我认为问题不在于createStackNavigator。实际问题是,从react navigation的第3版开始,您必须手动将createStackNavigator传递到createAppContainer,以便创建的容器可以成为react native渲染的主要组件
import { createAppContainer, createStackNavigator } from 'react-navigation';
// you can also import from @react-navigation/native
const AppNavigator = createStackNavigator(...);
// you have to pass the app navigator into app container like this
const AppContainer = createAppContainer(AppNavigator);
// Now AppContainer is the main component for React to render
export default AppContainer;
我们可以看看你是如何使用
MessagesStack
?你的堆栈是你的主要导航器吗?@evolutionxbox将其添加到question@HendEl-Sahli不,它是a的一部分TabNavigator@rafaelmorais文档:注意:在v2及更早版本中,React导航中的容器由create*Navigator函数自动提供。从v3开始,您需要直接使用容器。在v3中,我们还将createNavigationContainer重命名为createAppContainer。您需要使用createAppContainer
包装根导航器。我们可以看看您如何使用MessagesStack
?堆栈是您的主导航器吗?@evolutionxbox将其添加到question@HendEl-Sahli不,它是a的一部分TabNavigator@rafaelmorais文档:注:在v2及更早版本中,React导航中的容器由create*Navigator函数自动提供。从v3开始,您需要直接使用容器。在v3中,我们还将createNavigationContainer重命名为createAppContainer。您需要使用createAppContainer