reduxとimmutablejsを使用していますが、私は縮小機能を作成しようとしています。私はここで不変のJS - mergeは、配列からマップオブジェクトのリストを作成します
const a = new Immutable.Map({
numbers: [{id: 1},{id: 2}]
});
const b = a.merge(
{
numbers: [{id: 4},{id: 5}]
}
);
を期待していなかったいくつかの行動に遭遇している
は、私はnumbers
は、Mapオブジェクトの不変のリストであることを期待していなかったa
とb
a.get("numbers");
[Object, Object]
b.get("numbers");
List {size: 2, _origin: 0, _capacity: 2, _level: 5, _root: null…}
b.get("numbers").get(0);
Map {size: 1, _root: ArrayMapNode, __ownerID: undefined, __hash: undefined, __altered: false}
の値です。私のアプリケーションで
、Reduxのを使用して、私は初期状態を設定します。
const initialState = new Immutable.Map({
error: null,
isBusy: false,
films: []
});
私は減速、私は映画をフェッチするとき、私は次のようにそれらをマージしよう:
return state.merge({
isBusy: false,
films: action.payload,
error: null
});
この原因films
のような反応コンポーネントの問題は、最初はオブジェクトの配列であり、不変のマップのリストになります。
異なる初期状態を作成するか、別の種類のマージを使用する必要がありますか?または、他の何か?私はあなたがやろうとしているものだと思い
おかげ
数字を上書きすることが欲しいですが、それは問題ではありません。問題は、フィルムは最初はオブジェクトの配列であり、マージ後に不変のマップのリストになります。どのようにオブジェクトの配列として保持することができますか? – Daryn
これがトップのマップを使用している理由です。マップは内部オブジェクトをマップに変換しません。これを行うには、オブジェクトをマップに深く変換するI.fromJS()を使用し、リストに配列 – erdysson
を使用してください。プレーンな配列やオブジェクトを保持しながらそれらをマージすることは可能ですか? – Daryn