javascript - 动作永远不会到达减速器?
问题描述
我在我的应用程序中添加了一个新的减速器。为了测试它是否有效,我只是想将它与一个动作挂钩。但是,当调用此操作时,我在我的 devTools 中看到它正确执行,但它永远不会到达减速器。我正在使用 redux persist v6 并认为问题出在某个地方,我的应用程序非常错误,因为我试图坚持多个减速器。
我的商店:
const todoPersistConfig = {
key: 'TodoReducer',
storage: AsyncStorage,
whitelist: ['todos'],
stateReconciler: autoMergeLevel2
};
const storageConfig = {
key: 'StorageReducer',
storage: AsyncStorage,
whitelist: ['IDs'],
stateReconciler: autoMergeLevel2
};
const rootPersistConfig = {
key: 'root',
storage: AsyncStorage,
whitelist: ['TodoReducer', 'StorageReducer'],
stateReconciler: autoMergeLevel2
};
const reducers = combineReducers({
ModalReducer,
StorageReducer: persistReducer(storageConfig, StorageReducer),
TodoReducer: persistReducer(todoPersistConfig, TodoReducer),
AuthReducer
});
const persistedReducer = persistReducer(rootPersistConfig, reducers);
export default function storeConfiguration() {
const store = createStore(
persistedReducer,
{},
composeEnhancers(
applyMiddleware(ReduxThunk)
)
);
const persistor = persistStore(store);
return { persistor, store };
}
我的存储减速器:
import ADD_NOTIFICATION_ID from '../actions/types';
const initialState = {
IDs: []
};
const storage = (state = initialState, action) => {
switch (action.type) {
case ADD_NOTIFICATION_ID:
console.log('called on');
return {
...state,
IDs:
[
...state.IDs,
{
itemID: action.item.id,
reminderType: action.reminderType,
notificationID: action.notificationID
}
]
};
default:
return state;
}
};
export default storage;
正确调用的动作:
export const addNotificationID = (item, reminderType, notificationID) => {
return {
type: ADD_NOTIFICATION_ID,
notificationID,
item,
reminderType
};
};
之前我有这个动作去另一个减速器,但它被窃听了,所以我试图制作一个新的并重新开始。但是现在,我在减速器中的控制台日志甚至在操作发生时都不会触发。它没有到达减速器。
解决方案
自从我上次查看 redux-persist 已经有一段时间了,但我怀疑这条线可能是个问题
const persistedReducer = persistReducer(rootPersistConfig, reducers);
如果您要持久化子减速器,那么您不需要也持久化整个商店。
推荐阅读
- php - PHP中的array_values是否循环遍历所有项目?
- javascript - 为什么当我使用 gulp 缩小 HTML 时删除了 gulp-inject 注释
- apache - 如何使用 apache httpclient 设置无内容类型
- javascript - (Firebase/angularfire2) 下载 URL 时出现 [object Object] 错误
- bash - 如何将数字拆分为字符数组
- postgresql - 如何将 colpivot 功能放在视图中?
- r - 多维列表 - 如果有 2 个项目,则选择第二个项目
- html - 敲除文本效果背景消失取决于文本的定位?
- php - 在php在线考试系统中使用rand order时问题重复
- angular - 不允许在 Angular 中选择下拉列表中的另一个值