redux-persist-如何将嵌套状态列入黑名单/白名单

时间:2018-08-02 23:48:25

标签: nested state blacklist redux-persist

所以我有一个凭据对象,其中包含密码和用户名

payload: Object
  credentials: Object
    password: ""
    username: ""

并且我想在reducer配置中将密码列入黑名单,例如

const authPersistConfig = {
    key: 'AuthReducer',
    storage: storage,
    blacklist: ['credentials.password']
};

如果我使用此代码,则两个凭据状态最终都会被列入黑名单。我要保留用户名而不是密码。

redux-persist可能仅保留顶级状态,或者可能是语法错误,或者完全是其他原因-任何想法?

非常感谢

4 个答案:

答案 0 :(得分:0)

您可以按照redux-persist-transform-filter issue #277 - Whitelist reducer subproperty only?

中所述使用名为redux-persist的NPM软件包

答案 1 :(得分:0)

或者,如果您不希望完全删除键,而只是清除任何嵌套状态对象中的任何数据,则以下示例使用“ redux-persist” 中的 createTransform / p>

How to make redux-persist blacklist for nested state?

答案 2 :(得分:0)

您可以进行嵌套持久配置。

const rootPersistConfig: any = { 键:“根”, 超时:500, 存储:异步存储, 黑名单:[“凭据”], };

const credentialsPersistConfig: any = { 键:“凭据”, 存储:异步存储, 白名单:[“密码”], };

const rootReducer = combineReducers({ 凭据:persistReducer(credentialsPersistConfig, CredentialReducer), });

const persistedReducer = persistReducer(rootPersistConfig, rootReducer);

答案 3 :(得分:0)

您可以使用 pick 或 omit 将特定一级商店条目的任何嵌套值列入白名单或黑名单。 举个例子:

let blacklistTransform = createTransform((inboundState, key) => {
    if (key === 'credentials') {
        return omit(inboundState, ['password']);
    } else {
        return inboundState;
    }
});

const persistConfig = {
    key: 'root',
    storage: AsyncStorage,
    blacklist: ['credentials'], // Only roster entry
    transforms: [blacklistTransform],
};