如何使用redux persist保存特定的key?

问题描述 投票:0回答:1

我只想保存密钥

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']
仍然不起作用。

我如何实现它?

react-native redux redux-toolkit redux-persist
1个回答
0
投票

你只需要改变一件事。将您的

'settings'
中的
rootConfig
列入黑名单。

const rootPersistConfig = {
  key: 'root',
  storage: AsyncStorage,
  blacklist: ['settings'],
};
© www.soinside.com 2019 - 2024. All rights reserved.