1
私はかなり標準化されたエンティティストアでRedux、React、Lodashを使用しています。Redux、正規化されたエンティティとlodashのマージ
redux reducerの新しいエンティティをマージすると、既存のすべてのエンティティへの参照が変更されずに変更され、純粋なコンポーネントの再レンダリングが発生します。
lodashのマージの代わりに、マージされるオブジェクトにない値への既存の参照を維持しながらマージすることはできますか?
let entities = {
[1]: {a: true },
[2]: {a: true, b: true },
}
let response = {
[2]: {a: false }
}
let newEntities = _.merge({}, entities, response)
console.log(entities[1] === newEntities[1]) // false
私はその後、newEntities[2].b
が削除され、ここでスプレッドObject.assign/ES6を使用することはできません。
私は、カスタムsCUや再選択などの代替ソリューションがあることを認識していますが、その小道具の等価参照チェックを行うすべてのコンポーネントを変更する必要はなく、レデューサーレベルでこれを処理する方がはるかにクリーンです。