Tiefe Kopie in ES6 über die Verbreitung syntax

Ich versuche zum erstellen einer tiefen Kopie map-Methode für meine Redux-Projekt, die Arbeit mit Objekten statt mit arrays. Ich habe gelesen, dass in Redux jeder Staat sollte sich nichts ändern, die bisherigen Mitgliedstaaten.

export const mapCopy = (object, callback) => {
    return Object.keys(object).reduce(function (output, key) {

    output[key] = callback.call(this, {...object[key]});

    return output;
    }, {});
}

Funktioniert es:

    return mapCopy(state, e => {

            if (e.id === action.id) {
                 e.title = 'new item';
            }

            return e;
        })

Jedoch nicht Tiefe Kopie inneren Elemente, so brauche ich, um es zu optimieren, um:

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;
    }, {});
}

Dies ist weniger elegant, wie es erforderlich zu wissen, welche Objekte übergeben werden.
Gibt es eine Möglichkeit in ES6 zu verwenden, die Ausbreitung syntax, um Tiefe Kopie eines Objekts?

  • Siehe stackoverflow.com/questions/27936772/....
  • Dies ist ein XY-problem. Sie sollten nicht zu viel auf der tiefen Eigenschaften in redux. stattdessen sollten Sie erstellen Sie einfach ein anderes Getriebe arbeitet auf der Kind Scheibe des Staates, die Form und verwenden Sie dann combineReducers zu Komponieren, die zwei (oder mehr) zusammen. Wenn Sie verwenden idiomatische redux-Techniken, die Ihr problem von deep-Objekte Klonen geht Weg.
InformationsquelleAutor Guy | 2016-07-16
Schreibe einen Kommentar