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

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.
主站蜘蛛池模板: 眉山市| 灵石县| 贵定县| 秦皇岛市| 景谷| 巨鹿县| 山阳县| 三亚市| 清新县| 桂林市| 炎陵县| 福建省| 桃园县| 喜德县| 林甸县| 阿克| 登封市| 伊宁县| 东至县| 两当县| 江山市| 墨脱县| 秦皇岛市| 阳朔县| 印江| 太和县| 长顺县| 苗栗县| 固原市| 高密市| 平定县| 塘沽区| 玉山县| 石棉县| 沁阳市| 林芝县| 盈江县| 乡城县| 拜城县| 额敏县| 麻城市|