我使用 Redux,但遇到了 reducers 的问题。
isLoading: true - 这是我发送的操作。
isLoading:{} - 这是我在 reducer 之后在 props 中得到的。
如何解决?
我用它:
export function movieDiscoverIsLoading(state = false, action) {
switch (action.type) {
case MOVIES_DISCOVER_LOADING:
return Object.assign({}, state, action.isLoading);
default:
return state;
}
}
export function movieDiscoverItems(state = [], action) {
switch (action.type) {
case MOVIES_DISCOVER_RESULTS:
return Object.assign({}, state, action.items);
default:
return state;
}
}
日志:
还有一个问题: 如何使用 Object.assign 或扩展运算符更改复制对象中的一些字段?
当我尝试类似的事情时:
{ ...state, ...{items: action.items, isLoading: false}}
我有嵌套对象,其中 isLoading 在项目内部。
最佳答案
您改变传递给 reducer 的初始状态。似乎你应该返回 boolean
而不是 object
export function movieDiscoverIsLoading(state = false, action) {
// it is already boolean ^^^^^^^^^^^^^
switch (action.type) {
case MOVIES_DISCOVER_LOADING:
// why do you return an object here instead of boolean
return Object.assign({}, state, action.isLoading);
default:
return state;
}
}
要修复它,只需替换:
return Object.assign({}, state, action.isLoading);
到
return action.isLoading;
关于javascript - ObjectAssign 将 bool 转换为 object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51189570/