从应用商店或 Play 商店更新时应用崩溃,因为它有旧的本地存储
App crashes when updating from app store or play store because it has old localstorage
我使用 redux-persist 将数据持久化到 redux 存储。我现在在商店中添加了一些新标志,但是当应用程序从商店更新时,它没有获得新标志,因为它有旧的本地存储,并且本地存储在更新应用程序时没有清除。这会导致应用程序崩溃,直到我删除应用程序后重新安装它。
'use strict';
/* React Native */
import { AsyncStorage } from 'react-native';
/* Officetrax */
import { createStore, applyMiddleware } from 'redux';
import app from './reducers';
/* Thunk */
import thunk from 'redux-thunk';
/* Redux Storage */
import excludeSaveActionConstants from './constants/excludeSaveActionConstants';
/* Remote Redux Dev Tools */
import { composeWithDevTools } from 'remote-redux-devtools';
/* Redux Offline */
import { offline } from '@redux-offline/redux-offline';
import offlineConfig from '@redux-offline/redux-offline/lib/defaults';
/* Redux Logger */
import { createLogger } from 'redux-logger';
export default function configureStore() {
// Create redux logger
const logger = createLogger({
//logger: remoteConsole,
logErrors: true,
});
let persistOptions = { ...offlineConfig, whitelist: excludeSaveActionConstants };
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || composeWithDevTools;
// Create the store with middleware applied
let store = createStore(app, composeEnhancers(
applyMiddleware(thunk),
offline(persistOptions)
));
return store;
}
如果您正在更改 reducer 结构,您应该迁移,或者按照 Jesse Schokker 的建议清除所有缓存,但如果您真的不想丢失某些数据,请进行迁移。
import { createMigrate } from 'redux-persist';
const migrations = {
2: state => {
const { yourReducer } = state;
const mynewStructure = { ...yourReducer, myNewKey: 'some value' };
state.yourReducer = mynewStructure;
return state;
};
}
};
const persistConfig = {
...offlineConfig,
whitelist: excludeSaveActionConstants
version: 2, // Add a version which will correspond to the number declared in your migrate
migrate: createMigrate(migrations, { debug: false })
};
我使用 redux-persist 将数据持久化到 redux 存储。我现在在商店中添加了一些新标志,但是当应用程序从商店更新时,它没有获得新标志,因为它有旧的本地存储,并且本地存储在更新应用程序时没有清除。这会导致应用程序崩溃,直到我删除应用程序后重新安装它。
'use strict';
/* React Native */
import { AsyncStorage } from 'react-native';
/* Officetrax */
import { createStore, applyMiddleware } from 'redux';
import app from './reducers';
/* Thunk */
import thunk from 'redux-thunk';
/* Redux Storage */
import excludeSaveActionConstants from './constants/excludeSaveActionConstants';
/* Remote Redux Dev Tools */
import { composeWithDevTools } from 'remote-redux-devtools';
/* Redux Offline */
import { offline } from '@redux-offline/redux-offline';
import offlineConfig from '@redux-offline/redux-offline/lib/defaults';
/* Redux Logger */
import { createLogger } from 'redux-logger';
export default function configureStore() {
// Create redux logger
const logger = createLogger({
//logger: remoteConsole,
logErrors: true,
});
let persistOptions = { ...offlineConfig, whitelist: excludeSaveActionConstants };
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || composeWithDevTools;
// Create the store with middleware applied
let store = createStore(app, composeEnhancers(
applyMiddleware(thunk),
offline(persistOptions)
));
return store;
}
如果您正在更改 reducer 结构,您应该迁移,或者按照 Jesse Schokker 的建议清除所有缓存,但如果您真的不想丢失某些数据,请进行迁移。
import { createMigrate } from 'redux-persist';
const migrations = {
2: state => {
const { yourReducer } = state;
const mynewStructure = { ...yourReducer, myNewKey: 'some value' };
state.yourReducer = mynewStructure;
return state;
};
}
};
const persistConfig = {
...offlineConfig,
whitelist: excludeSaveActionConstants
version: 2, // Add a version which will correspond to the number declared in your migrate
migrate: createMigrate(migrations, { debug: false })
};