React Native+Redux问题:远程调试时Redux工具未找到Store
解决Redux DevTools远程调试提示“未找到Store”的问题
我碰到过好几个开发者遇到一模一样的问题,咱们一步步排查解决:
1. 先检查composeWithDevTools的使用顺序
从你给出的代码片段来看,你用了remote-redux-devtools的composeWithDevTools,这里最容易踩坑的就是包裹顺序——必须让它包裹applyMiddleware的结果,而不是反过来。正确的写法应该是这样:
// 别忘了导入你的根reducer,你代码里省略了这部分 import rootReducer from './reducers'; const store = createStore( rootReducer, composeWithDevTools( applyMiddleware( thunkMiddleware, promiseMiddleware // 其他中间件按业务需求顺序放这里 ) ) );
如果你的remotedev-server不是默认的localhost:8000,还可以手动指定连接参数,避免连接错位:
composeWithDevTools({ hostname: '你的服务器地址', port: 你的端口号, realtime: true })( applyMiddleware(thunkMiddleware, promiseMiddleware) )
2. 确认Provider真的正确包裹了整个应用
你导入了Provider,但一定要确保它确实包裹了应用的根组件,并且正确传入了刚创建的store实例:
class App extends Component { render() { return ( <Provider store={store}> {/* 这里的store必须是你上面创建的那个实例 */} {/* 你的根页面/组件都要放在Provider内部 */} </Provider> ); } }
要是Provider没套对位置,或者store参数传错了,DevTools根本抓不到Store的存在。
3. 排查版本兼容性问题
有时候依赖版本不匹配也会导致这种“明明连了但找不到Store”的诡异情况。可以尝试把相关依赖更到稳定版本:
npm update redux react-redux remote-redux-devtools redux-thunk redux-promise-middleware
4. 重启remotedev-server和应用
虽然控制台显示已连接,但偶尔会出现连接状态不同步的情况。先关掉remotedev-server,再重启,然后刷新应用重新连接,说不定就能解决。
5. 检查有没有异步初始化Store的逻辑
如果你的Store是异步创建的(比如从后端拉取初始状态再初始化),可能会导致DevTools在Store准备好之前就尝试连接,自然会提示找不到。尽量保证Store是同步创建并传入Provider的。
内容的提问来源于stack exchange,提问作者Generaldeep
相关产品推荐
相关产品推荐

