官术网_书友最值得收藏!

Passing Immutable.js collections

Another scenario for passing data to Immutable.js constructors is for passing other Immutable.js collections. For example, let's say that you have a map instance, just like the one that we created in the preceding section. You can then do the following:

const firstMap = Map({ a: 1, b: 2, c: 3 });
console.log('myMap', myMap.get('a'));
// -> myMap 1

As expected, you get a new map instance in the firstMap constant. Now let's use this first instance as the input for creating another map:

const myMap = Map(firstMap);
console.log('firstMap === myMap', firstMap === myMap);
// -> firstMap === myMap true

Wait, if Immutable.js maps are immutable, how can firstMap be the same reference as myMap? This is a trick that Immutable.js uses to avoid having to create another instance of the exact same collection. By doing this, you're not actually violating any kind of immutability constraints. The collection that is passed to Map() can't change, so creating a copy of it is wasteful.

This can be useful if you're creating a function that accepts a collection as an argument:

const myFunc = map => Map(map).toJS();

console.log('myFunc(object)', myFunc({ a: 1, b: 2, c: 3 }));
// -> myFunc(object) { a: 1, b: 2, c: 3 }
console.log('myFunc(map)', myFunc(myMap));
// -> myFunc(map) { a: 1, b: 2, c: 3 }
Rule of thumb: it's never a bad idea to wrap a collection in a collection constructor so that you get consistent results.
主站蜘蛛池模板: 安康市| 广昌县| 嘉义县| 句容市| 沁源县| 西城区| 尼勒克县| 峨眉山市| 图们市| 翼城县| 浦北县| 乌兰浩特市| 九龙城区| 湄潭县| 明星| 宿州市| 凌云县| 施甸县| 奉新县| 新密市| 古蔺县| 山丹县| 米林县| 铁岭县| 偃师市| 青岛市| 安远县| 玉山县| 徐汇区| 容城县| 邳州市| 滦平县| 海晏县| 丘北县| 新邵县| 周宁县| 行唐县| 靖州| 桐乡市| 英超| 英山县|