当前位置 : 主页 > 网页制作 > React >

reactjs – 如何使用redux-persist保持React-native redux状态?

来源:互联网 收集:自由互联 发布时间:2021-06-15
我一直在尝试使用redux-perist将我的redux-state保存到AsyncStorage.虽然我一直收到错误: _this.store.getState is not a function 我不确定为什么会这样? 这是我的设置: configureStore.js: import {AsyncSt
我一直在尝试使用redux-perist将我的redux-state保存到AsyncStorage.虽然我一直收到错误:

_this.store.getState is not a function

我不确定为什么会这样?

这是我的设置:

configureStore.js:

import {AsyncStorage,} from 'react-native';
import { createStore, applyMiddleware, compose, combineReducers, } from 'redux';
import reduxThunkMiddleware from 'redux-thunk';
import Reactotron from 'reactotron';
import * as reducers from './modules';
import devTools from 'remote-redux-devtools';
import {persistStore, autoRehydrate} from 'redux-persist'


Reactotron.connect({
  enabled: __DEV__,
});

const enhancer = compose(
  autoRehydrate(),
  applyMiddleware(
    reduxThunkMiddleware,
    Reactotron.reduxMiddleware,
  ),
  devTools()
);

export default function configureStore(initialState) {
  const store = createStore(
    combineReducers({
      ...reducers,
    }),
    initialState,
    enhancer,
  );
  Reactotron.addReduxStore(store, {storage: AsyncStorage});
  return store;
}

App.js:

这是我将商店连接到我的< provider>的地方:

import React from 'react';
import {AsyncStorage} from 'react-native';
import { Provider, connect } from 'react-redux';
import { Router } from 'react-native-router-flux';
import routes from '@routes/app';
import createStore from './redux/create'; // Returns store object from the above configureStore.js!
import {persistStore} from 'redux-persist'
const RouterWithRedux = connect()(Router);

const store = persistStore(createStore(), {storage: AsyncStorage}); // Not working??
const Kernel = () => (
  <Provider store={store}>
    <RouterWithRedux scenes={routes} />
  </Provider>
);

export default Kernel;
const RouterWithRedux = connect()(Router);
const store = createStore();
const persistor = persistStore(store, {storage: AsyncStorage}); // Not working??
const Kernel = () => (
  <Provider store={store} persistor={persistor}>
    <RouterWithRedux scenes={routes} />
  </Provider>
);

问题是我不得不传递一个persistor字段以及store字段.

添加persistor字段后,我的商店被持久化为AsyncStorage

编辑:

这在当时起作用 – 我发现这不是问题的正确解决方案.但我仍然得到它仍然有效的回应,如果有人可以为其他人提供另一个答案,那就太好了.

网友评论