Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在React Native中将createStackNavigator导出为类?_Javascript_React Native_React Navigation_Mobx React - Fatal编程技术网

Javascript 如何在React Native中将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作为组件类是可能的,我试图实现这一点,但我总是遇到一个错误

而不是这个:

导出默认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