我有一个INITIAL_STATE = {}
的缩减器,然后在调度某些操作时,我会用一些数据填充它,例如[key]: {name: 'john'}, ...
。
是否可以为这些对象设置一些默认字段?
例如,如果它是一个将填充人物对象的reducer
默认字段可以是{nationality: 'kazakh'}
。
答案 0 :(得分:1)
当然!这将作为减速器的一部分完成。我们假设你有一个动作来添加具有形状的用户
{
id,
name,
email,
emailVerified,
}
并且您希望emailVerfied
字段默认为false
,因为它不是动作有效内容的一部分。
您可以写下类似内容:
const userDefaults = {
emailVerified: false
};
function userReducer(state = INITIAL_STATE, action) {
switch (action.type) {
case 'user.add':
return Object.assign(state, {
[action.payload.id]: Object.assign({}, userDefaults, action.payload)
});
}
}
嵌套Object.assign
将创建一个新对象,该对象合并默认值和操作有效负载,优先选择操作有效内容中的值超过任何默认值。