我正在尝试为我的 Redux 项目创建一个深拷贝映射方法,该方法将使用对象而不是数组。我读到在 Redux 中,每个状态都不应该改变先前状态中的任何内容。
export const mapCopy = (object, callback) => {
    return Object.keys(object).reduce(function (output, key) {
    output[key] = callback.call(this, {...object[key]});
    return output;
    }, {});
}
有用:
    return mapCopy(state, e => {
            if (e.id === action.id) {
                 e.title = 'new item';
            }
            return e;
        })
但是它不会深度复制内部项目,因此我需要将其调整为:
export const mapCopy = (object, callback) => {
    return Object.keys(object).reduce(function (output, key) {
    let newObject = {...object[key]};
    newObject.style = {...newObject.style};
    newObject.data = {...newObject.data};
    output[key] = callback.call(this, newObject);
    return output;
    }, {});
}
这不太优雅,因为它需要知道传递了哪些对象。ES6 中有没有办法使用扩展语法来深度复制对象?