【发布时间】:2020-11-05 12:28:16
【问题描述】:
搜索了一段时间这样的问题,但找不到任何东西。 基本上,当用户登录到会话时,从 redux saga 调用设置获取,然后我将这些值放在适当的存储中,但是当我执行另一个甚至不从该 reducer 调用函数的操作时,神奇地我看到了我的物品从那家商店消失,15 个物品中只剩下 3 个。搜索整个应用程序,看看我是否在其他地方调用了 setSettings,但没有,只是在 1 个地方(传奇)。 截图和代码如下: the setadditionalinfo is a function from the interface reducer that doesn't even have a saga!
functionality.saga.js
export function* settingsStartProcess() {
try {
const response = yield call(SYSTEMCALLS.fetchSettings)
yield put(setSettings(response.data));
} catch (error) {
yield put(setFetchSettingsFailure(error.message));
}
}
export function* fetchSettingsStart() {
yield takeLatest(
FunctionalityActionTypes.FETCH_SETTINGS_START,
settingsStartProcess
);
}
export function* functionalitySagas() {
yield all([
call(fetchSettingsStart),
]);
}
functionality.reducer.js
const functionalityReducer = (state = INITIAL_STATE, action) => {
switch (action.type) {
case FunctionalityActionTypes.SET_SETTINGS:
return {
...state,
isLoading: false,
functions: convertFunctions(action.payload.funzionalita, true),
branches: action.payload.sigleRami
};
case FunctionalityActionTypes.FETCH_SETTINGS_START:
return {
...state,
isLoading: true
};
case FunctionalityActionTypes.FETCH_SETTINGS_FAILURE:
return {
...state,
isLoading: false,
error: action.payload
};
default:
return state;
}
};
如果这个 user.selector 代码会干扰状态,也想添加它,但不应该:
export const selectCleanUserBranches = createSelector(
[selectUser, selectFunc],
(user, func) => createCleanDataFromUserSigle(user.currentUser.sigle, func.branches)
);
export const selectTreeDataUserBranches = createSelector(
[selectUser, selectFunc],
(user, func) => convertSigleToTreeData(createCleanDataFromUserSigle(user.currentUser.sigle, func.branches))
);
【问题讨论】:
标签: reactjs redux react-redux redux-saga