首页 > 解决方案 > 当我添加或编辑减速器时,是否存在更改持久化还原版本的方法?

问题描述

我有点被困扰我的事情所困扰,通常我使用redux persist store将redux store保存在本地存储中,但是当我添加或编辑reducer并在生产中对我的应用程序进行新部署时,redux persist 版本无法识别新的 redux 持久存储并引发错误,因此为了解决此问题,我必须在生产环境中清理浏览器缓存,这解决了我的问题。

所以我的问题是,redux persist 中存在一些东西,我可以用来告诉生产中的旧持久版本,现在这是新版本吗?

这是我的代码

import { createStore, applyMiddleware, Store } from 'redux';
import { composeWithDevTools } from 'redux-devtools-extension';
import thunk from 'redux-thunk';
import { persistStore, Persistor } from 'redux-persist';
import { persistReducer } from 'redux-persist';
import storage from 'redux-persist/es/storage';
import rootReducer from './redux/reducers/index';

export type RootState = ReturnType<typeof rootReducer>;
export interface ConfiguredStore {
  store: Store;
  persistor: Persistor;
}

const persistConfig = {
  key: 'root',
  storage,
};

/**
 * Configure and returns store and persistor.
 */
export default (): ConfiguredStore => {
  const store = createStore(
    persistReducer(persistConfig, rootReducer),
    composeWithDevTools(applyMiddleware(thunk)),
  );
  const persistor = persistStore(store);

  return { store, persistor };
};

这也是索引配置

import React from 'react';
import ReactDOM from 'react-dom';

import App from './App';
import { Provider } from 'react-redux';

import { PersistGate } from 'redux-persist/integration/react';
import configureStore from './configureStore';

import { I18nextProvider } from 'react-i18next';
import i18next from './translate';

import * as Sentry from '@sentry/react';
import { Integrations } from '@sentry/tracing';

import amplitude from 'amplitude-js';

import './assets/GlobalStyles.scss';
import 'bulma/css/bulma.min.css';

const { store, persistor } = configureStore();

Sentry.init({
  dsn: `${process.env.REACT_APP_SENTRY}`,
  integrations: [new Integrations.BrowserTracing()],
  tracesSampleRate: 1.0,
});

amplitude.getInstance().init(`${process.env.REACT_APP_AMPLITUDE}`);

ReactDOM.render(
  <Provider store={store}>
    <PersistGate loading={null} persistor={persistor}>
      <I18nextProvider i18n={i18next}>
        <App />
      </I18nextProvider>
    </PersistGate>
  </Provider>,

  document.getElementById('root'),
);

我希望有人可以指导我或给我一些信息..我会很感激。

标签: javascriptreactjsreduxreact-reduxpersist

解决方案


推荐阅读