react-native - 如何将我的 React Navigator 包装在 redux 商店中?
问题描述
在我的 app.js 文件中,我有一个 Navigator,我试图将它包装在一个 redux 商店中,以便控制整个应用程序的状态。我收到了这个错误:
“不变违规:此导航器缺少导航道具。在 react-navigation v3 和 v4 中,您必须直接设置您的应用容器。”
如何正确地将导航器包装在 Redux 商店中以便我可以使用它?
应用程序.js
import React from 'react';
import { registerRootComponent } from 'expo';
import { View, Text, Button } from 'react-native';
import { createAppContainer, createStackNavigator } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';
import { createStore, applyMiddleware } from 'redux'
import { Provider } from 'react-redux'
import thunkMiddleware from 'redux-thunk'
import reducer from './store/reducers'
// Components
import Home from './Screens/Home';
import Landing from './Screens/Landing';
import Tasks from './Screens/Tasks';
import Login from './Screens/Login';
const middleware = applyMiddleware(thunkMiddleware)
const store = createStore(reducer, middleware)
const Navigator = createStackNavigator({
Tasks: {screen: Tasks},
Landing: {screen: Landing},
Home: { screen: Home },
});
export default class App extends React.Component {
render() {
return (
<Provider store={store}>
<Navigator />
</Provider>
)
}
}
解决方案
我想出了如何做到这一点。下面是我的应用程序包装在商店容器中的更新代码。
import { createStore, applyMiddleware } from 'redux'
import { Provider } from 'react-redux'
import thunkMiddleware from 'redux-thunk'
import reducer from './store/reducers'
// Components
import Home from './Screens/Home';
import Landing from './Screens/Landing';
import Tasks from './Screens/Tasks';
import Login from './Screens/Login';
const middleware = applyMiddleware(thunkMiddleware)
const store = createStore(reducer, middleware)
const Navigator = createStackNavigator({
Tasks: {screen: Tasks},
Landing: {screen: Landing},
Home: { screen: Home },
});
//ADDED THIS
const App_1 = createAppContainer(Navigator);
export default class App extends React.Component {
render() {
return (
<Provider store={store}>
<App_1 /> //UPDATED
</Provider>
)
}
}
推荐阅读
- .net - 为什么 .NET 5 项目除了 EXE 之外,还要创建两个同名的 DLL,一个在主二进制文件夹中,一个在 refs 子文件夹中?
- visual-studio-code - VSCode:如何构建一个带有少量模块和测试、调试和 linting 的简单 python 包?
- reactjs - 如何在反应中读取 PNG 的元数据
- python - 电路 Python MQTT 异常块
- python - Sed 从命令行工作,但不在 Python 脚本中
- .net - 如何使用 docker 在 Heroku 上运行 https 服务器?
- python - 跨度标签内文本的美丽汤提取
- python - 比较列值是列表的熊猫数据帧
- oracle - 与智能合约预言机交互
- r - 基于 2 个引用字符串列创建新列