如果声明与前一个相同,我想尝试不要传播"dispatch"。 我的“状态”始终包含默认值的问题。
const initialState = {
pending: false,
fetched: false,
data: {
playAndPayAllowed: false,
sections: {},
allowedSectionsCount: 0
}
}
function isPreviousStateEqualToNew(oldState, newState) {
return JSON.stringify(oldState) === JSON.stringify(newState);
}
export default function shopConfig(state = initialState, action) {
switch (action.type) {
case SHOP_CONFIG_PENDING:
return {
...state,
pending: true,
data: {
playAndPayAllowed: false,
sections: {},
allowedSectionsCount: 0
},
error: false
}
case SHOP_CONFIG_SUCCESS:
if (isPreviousStateEqualToNew(state.data, action.payload)) {
return;
}
const playAndPayAllowed = action.payload.playAndPayAllowed;
const sections = action.payload.sections || [];
const allowedSectionsCount = Object.values(sections).filter(item => item);
return {
...state,
pending: false,
data: {
playAndPayAllowed,
sections: sections,
allowedSectionsCount: allowedSectionsCount.length
},
error: false
}
default:
return state;
}
}
期望在“state”变量中看到旧状态,但“state”始终等于“initialState”。
最佳答案
我不明白问题出在哪里,或者我弄错了,只需返回未更改的状态:
if (isPreviousStateEqualToNew(state.data, action.payload)) {
return state;
}
关于javascript - 在 React Redux 中将之前的状态与新的状态进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58571278/