Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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
Reactjs 在组件外部访问的Redux存储返回初始状态_Reactjs_React Native_Redux_Redux Persist - Fatal编程技术网

Reactjs 在组件外部访问的Redux存储返回初始状态

Reactjs 在组件外部访问的Redux存储返回初始状态,reactjs,react-native,redux,redux-persist,Reactjs,React Native,Redux,Redux Persist,我想知道我想要实现的目标是否可行,如果可行,那么我想找出我做错了什么。 我正在使用react本机线程库创建一个单独的“线程”。里面应该有一些setInterval函数,可以检查应用程序的当前状态,比如说每20秒检查一次。 在这条线索中,我试图做一些类似于这个问题的最佳答案中所描述的事情: 但是,我使用的是redux persist,因此在store配置文件中没有一个普通的“store”变量。 门店设置代码: const rootReducer = combineReducers({

我想知道我想要实现的目标是否可行,如果可行,那么我想找出我做错了什么。 我正在使用react本机线程库创建一个单独的“线程”。里面应该有一些setInterval函数,可以检查应用程序的当前状态,比如说每20秒检查一次。 在这条线索中,我试图做一些类似于这个问题的最佳答案中所描述的事情: 但是,我使用的是redux persist,因此在store配置文件中没有一个普通的“store”变量。 门店设置代码:

    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);
const store=configureStore();
常量RNRedux=()=>(
);
AppRegistry.registerComponent(“ProjectName”,()=>RNRedux);

您可以在存储文件中调用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());

我发现我的问题是文件之间的循环依赖关系。这使得一些变量未初始化,因此我建议仔细检查。

每次调用
configureStore()
,您都在创建一个新的存储,因此默认值为
configureStore()
。是的,我假设是这样。如何访问已创建的实际存储?configureStore()文件是在我的index.js中调用的,但是我不能在没有崩溃应用程序的情况下将任何导出放在那里。您可以直接在模块级别上运行名为
configureStore
的函数,然后直接导出
store
persistor
。@Anniehil您解决了这个问题吗?不幸的是,当我像你上面描述的那样做时,我得到了这个错误:undefined不是一个对象(评估'\u configureStore2.default.configureStore.store),然后,如果我这样调用它:configureStore().store.getState(),它会再次返回初始状态。或者,如果我像这样导入:{configureStore}我得到了与上面提到的相同的错误,但有点不同(_configureStore.configureStore.store),我已经这样尝试过:
const pr=persistReducer(persistConfig,rootReducer)export const store=createStore(pr,devToolsEnhancer)({realtime:true,hostname:'localhost',port:8082})export const persistor=persistStore(store,null,()=>{console.log('state',store.getState();});
但我仍然得到了存储的一个新实例