简短的问题是:这条线是什么
return { ...state, all: action.payload.data };
做?(特别是all:
部分(。
如果您不使用 ES6,并且state
- 2个类似下面的属性
- 10 个属性而不是 2 个属性
- 未知数量的属性
那怎么写呢?
细节:它是React/Redux的一部分。在化简器函数中,给定先前的状态和动作,它确实:
const INITIAL_STATE = {
all: [],
post: null
};
export default function(state = INITIAL_STATE, action) {
switch(action.type) {
case FETCH_POSTS:
return { ...state, all: action.payload.data };
default:
return state;
}
}
从技术上讲,这与调用
:return Object.assign({}, state, {all: action.payload.data});
这意味着生成的对象:
- 不是原始对象
- 它包含来自
state
的所有属性 - 它包含属性
all
的新值。
return { ...state, all: action.payload.data };
所做的是解构状态以获取其中的所有属性,然后通过使用键all
仅修改所有对象来返回对象
假设在你的情况下
state={
all: [],
post: null
};
然后
...state
会将all:[], post:null
作为单独的值返回。因此,使用 { ...state, all: action.payload.data }
将all
的值设置为action.payload.data
,并返回包装为对象的整个值。在您的情况下,如果action.payload.data = ["hello", "world"]
,它将返回
{
all: ["hello", "world"],
post: null
}