将reducer中的默认字段设置为未知对象

时间:2018-01-15 04:12:17

标签: reactjs redux react-redux

我有一个INITIAL_STATE = {}的缩减器,然后在调度某些操作时,我会用一些数据填充它,例如[key]: {name: 'john'}, ...

是否可以为这些对象设置一些默认字段? 例如,如果它是一个将填充人物对象的reducer 默认字段可以是{nationality: 'kazakh'}

1 个答案:

答案 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将创建一个新对象,该对象合并默认值和操作有效负载,优先选择操作有效内容中的值超过任何默认值。