我想知道我要实现的目标是否可行,如果可以,那么我想找出我做错了什么。 我正在使用react-native-threads库创建单独的“线程”。内部应该有一些setInterval函数,例如每20秒检查一次应用程序的当前状态。 现在,在该线程内,我正在尝试执行与该问题的最佳答案中所述类似的操作: What is the best way to access redux store outside a react component? 但是,我使用的是redux-persist,所以在存储配置文件中没有简单的“存储”变量。 商店设置代码:
const rootReducer = combineReducers({
appState: appStateReducer,
entries: entriesReducer,
listHelper: listHelperReducer,
authenticate: authenticateReducer
})
const persistConfig = {
key: 'root',
storage,
stateReconciler: autoMergeLevel2,
blacklist: [ 'appState' , 'listHelper'],
whitelist: ['authenticate' , 'entries']
}
const pr = persistReducer(persistConfig, rootReducer)
const configureStore = () => {
const store = createStore(pr, devToolsEnhancer({ realtime: true, hostname: 'localhost', port: 8082 }))
const persistor = persistStore(store)
return { persistor, store }
}
export default configureStore
我尝试从该文件导入configureStore并访问index.thread.js中的状态:
console.tron.log(configureStore().store.getState());
但是,这将返回初始状态。补液后,我需要当前状态。 有没有人试图解决类似的问题?如有任何提示,我将不胜感激。谢谢。
编辑:这是在其中调用configureStore的index.js文件。
const store = configureStore();
const RNRedux = () => (
<Provider store={store.store}>
<PersistGate loading={<LoadingScreen />} persistor={store.persistor}>
<App />
</PersistGate>
</Provider>
);
AppRegistry.registerComponent("ProjectName", () => RNRedux);
答案 0 :(得分:0)
您可以在商店文件中调用createStore并将其从那里导出。
const pr = persistReducer(persistConfig, rootReducer);
const store = createStore(pr, devToolsEnhancer({ realtime: true, hostname: 'localhost', port: 8082 }))
const configureStore = () => {
const persistor = persistStore(store)
return { persistor, store }
}
export default configureStore
现在,您可以像下面那样使用商店。
console.tron.log(configureStore.store.getState());
答案 1 :(得分:0)
我发现我的问题是文件之间的循环依赖关系。剩下一些未初始化的变量,所以我建议仔细检查。