我只想保存密钥
currentLanguage
设置减速器:
import { createSlice } from '@reduxjs/toolkit';
export const initialState = {
currentLanguage: '',
test: 'original',
};
const slice = createSlice({
name: 'settings',
initialState,
reducers: {
setCurrentLanguage(state, { payload }: { payload: string }) {
state.currentLanguage = payload;
state.test = payload;
},
},
});
const settingsReducer = slice.reducer;
export const {
setCurrentLanguage,
} = slice.actions;
export default settingsReducer;
这是我用于持久设置的减速器:
import AsyncStorage from '@react-native-async-storage/async-storage';
import { combineReducers } from '@reduxjs/toolkit';
import { persistReducer } from 'redux-persist';
import settingsReducer from './settingsReducer';
const rootPersistConfig = {
key: 'root',
storage: AsyncStorage,
};
const settingsPersistConfig = {
key: 'settings',
storage: AsyncStorage,
whitelist: ['currentLanguage'],
};
const combinedReducer = combineReducers({
settings: persistReducer(settingsPersistConfig, settingsReducer),
});
const persistedReducer = persistReducer(
rootPersistConfig,
combinedReducer
);
然后App先init然后触发
setCurrentLanguage('en')
动作,然后重新打开app查看数据,我猜数据应该是{ currentLanguage: 'en', test: 'original' }
,但是结果是{ currentLanguage: 'en', test: 'en' }
。
我尝试使用
blocklist: ['test']
而不是 whitelist: ['currentLanguage']
仍然不起作用。
我如何实现它?
你只需要改变一件事。将您的
'settings'
中的 rootConfig
列入黑名单。
const rootPersistConfig = {
key: 'root',
storage: AsyncStorage,
blacklist: ['settings'],
};