redux-persist 黑名单被忽略

2024-02-19

我已经查看了我能找到的内容,但据我所知,我做的事情是正确的。

我的 configStore.js 如下所示:

import diaryReducer from '../reducers/diaryReducer';
[..]
const diaryPersistConfig = {
    key: 'diary',
    storage: storage,
    keyPrefix: '',
    blacklist: ['loading', 'uploadModalVisible', 'monthModalVisible', 'editModalVisible', 'entryUploading', 'deleteEntryDisabled']
};
[..]
const persistedReducer = persistReducer(persistConfig, combineReducers({
    auth: persistReducer(authPersistConfig, authReducer),
    diary: persistReducer(diaryPersistConfig, diaryReducer)
}));

我的 diaryreducer.js 如下所示:

const diaryDefaultState = {
    loading: false,
    uploadModalVisible: false,
    monthModalVisible: false,
    editModalVisible: false,
    entryUploading: false,
    deleteEntryDisabled: false,
    entries: []
};

export default (state = diaryDefaultState, action) => {

switch (action.type) {

    case 'ENTRIES_LOADING':
        return {
            ...state,
            loading: true
        };
    [..others, don't think these are important for storage, just use during run?..]

Diary.js 看起来像这样:

//in render()
<Modal
                        animationType="slide"
                        onRequestClose={this.onCloseModal}
                        transparent={false}
                        visible={this.props.uploadModalVisible}
                    >
[....]
const mapStateToProps = (state) => {

return {
    user: state.auth.user,
    loading: state.diary.loading,
    uploadModalVisible: state.diary.uploadModalVisible,
    monthModalVisible: state.diary.monthModalVisible,
    editModalVisible: state.diary.editModalVisible,
    entryUploading: state.diary.entryUploading,
    deleteEntryDisabled: state.diary.deleteEntryDisabled,
    entries: state.diary.entries
};

};

uploadModalVisible 正在持久化,因此当我在应用程序打开时离开该应用程序时,该值仍然为 true,并且当我在重新启动应用程序后返回该页面时它是可见的。

据我所知,我正确使用了黑名单,但它对我不起作用。谁能看到我做错了什么吗?


我在我的项目中遇到了同样的问题。使用 redux-persist 黑名单和白名单时有一个问题,因为它们的行为有点奇怪。

在你的代码中你有diaryPersistConfig设置正确,但你没有包括你的persistConfig目的。我怀疑问题出在那个配置上,这是非常不直观的。

您必须添加一个blacklist标记到组合减速器持久配置,否则较低级别(diaryPersistConfig) 黑名单将被忽略。

下面的代码应该可以帮助您理解我的意思:

const diaryPersistConfig = {
    key: 'diary',
    storage: storage,
    keyPrefix: '',
    blacklist: ['loading', 'uploadModalVisible', 'monthModalVisible', 'editModalVisible', 'entryUploading', 'deleteEntryDisabled']
};

const persistConfig = {
    key: 'root',
    storage: AsyncStorage,
    blacklist: ['diary'],
};

const persistedReducer = persistReducer(persistConfig, combineReducers({
    auth: persistReducer(authPersistConfig, authReducer),
    diary: persistReducer(diaryPersistConfig, diaryReducer)
}));

有关官方示例,请查看 Redux Persist 的嵌套持久化 https://github.com/rt2zz/redux-persist#nested-persists自述文件部分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

redux-persist 黑名单被忽略 的相关文章

随机推荐