首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何使用redux持久化来保持本地redux状态?

我如何使用redux持久化来保持本地redux状态?
EN

Stack Overflow用户
提问于 2016-05-05 05:06:30
回答 1查看 8.7K关注 0票数 4

我一直试图使用redux将我的redux状态保存到AsyncStorage。尽管我一直有一个错误:

代码语言:javascript
复制
_this.store.getState is not a function

我不知道为什么会这样?

这是我的设置:

configureStore.js:

代码语言:javascript
复制
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:

这里是我将store连接到<provider>的地方

代码语言:javascript
复制
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;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-05 11:51:18

代码语言:javascript
复制
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>
);

问题是,我必须传递一个持久化字段和存储字段。

添加了持久化字段后,我的存储被持久化到AsyncStorage中。

编辑:

这在当时起作用了--我认为这不是解决问题的正确办法。但我仍然得到的回应是,它仍然有效,如果有人能为其他人提供另一个答案,那就太好了。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37042790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档