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

  • Mastering Immutable.js
  • Adam Boduch
  • 242字
  • 2021-07-08 10:30:08

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.
主站蜘蛛池模板: 娱乐| 宜阳县| 南雄市| 西乌珠穆沁旗| 莲花县| 资中县| 六盘水市| 英吉沙县| 正宁县| 鸡泽县| 黄大仙区| 融水| 乃东县| 卢龙县| 新平| 元阳县| 墨脱县| 宁陵县| 平潭县| 孟连| 龙口市| 满城县| 那坡县| 浠水县| 桂林市| 朔州市| 成武县| 灵武市| 洛浦县| 孝感市| 高雄市| 仙居县| 九寨沟县| 光山县| 泽库县| 崇仁县| 凤庆县| 大石桥市| 丰镇市| 祁门县| 咸丰县|