Redux 开发工具和 React Native
Posted
技术标签:
【中文标题】Redux 开发工具和 React Native【英文标题】:Redux devtools and React Native 【发布时间】:2019-07-27 22:37:00 【问题描述】:我正在开发一个 React Native 应用程序,但由于某些原因,我的 redux devtools 无法检测到商店。
这是 store.js 的代码
import createStore, applyMiddleware, compose from 'redux';
import createSagaMiddleware from 'redux-saga';
import jobs from './reducers/jobs';
import watcherSaga from './sagas';
// Saga Middleware
const sagaMiddleware = createSagaMiddleware();
const composeEnhancer = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
let store = createStore(jobs, composeEnhancer(applyMiddleware(sagaMiddleware)));
sagaMiddleware.run(watcherSaga);
// Enable Hot Module for the reducers
/* eslint-disable global-require */
if (module.hot)
// module.hot.accept('./reducers/index', () =>
// store.replaceReducers(require('./reducers').default);
// );
export default store;
当我打开 chrome debugger-ui 时,我在 redux 选项卡中看到“未找到商店”。
我已经通过扩展设置授予了对文件 url 的访问权限。我不知道可能是什么问题。我尝试了几个使用中间件和 redux-tools 的商店设置,在教程中找到,但它们似乎都不起作用。我也尝试了独立应用程序,但它没有检测到任何东西,也没有检测到反应代码。 我做错了什么?
【问题讨论】:
jobs
中有什么?是combineReducers(...reducers )
对象吗?
我为reducers创建了一个索引文件: const rootReducer = combineReducers( jobs, other );但是如果您查看代码,您会发现我正在尝试直接加载作业减速器。
不行,你需要将rootReducer
作为第一个参数传递给createStore
,而不仅仅是jobs
更奇怪的是,当我启动应用程序并且 chrome 打开“window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__”以及“REDUX_DEVTOOLS_EXTENSION”时存在,但是当我控制台登录时它们是未定义的store.js 所以基本上商店是在扩展加载到chrome之前加载的?可能是这样吗?
我不确定,但我认为浏览器的window
与您尝试通过应用程序加载它时存在问题。尝试文档github.com/zalmoxisus/redux-devtools-extension 中的步骤 1.3。 import composeWithDevTools from 'redux-devtools-extension';
而不是 window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
【参考方案1】:
我找到了解决方案并分享了它,以便帮助其他人。 主要问题是我使用的是 expo,所以 expo 在与普通 devtools 不同的端口上运行。 我没有使用 chrome,而是下载了独立的调试器,然后,感谢article,我用正确的端口打开了调试器,这很神奇:
rndebugger://set-debugger-loc?host=localhost&port=19001
【讨论】:
以上是关于Redux 开发工具和 React Native的主要内容,如果未能解决你的问题,请参考以下文章
React-native + Redux(Combine Reducers):创建状态结构
从 react-native-router-flux 事件调度操作到 redux
在 React-native 中使用 Redux Toolkit 持久化存储
React Native 已经有了异步存储。为啥我应该在我的 react native 应用中使用 Redux 和 Redux Thunk?