Immutable.js 实现原理
Immutable collections for JavaScript
v4.0.0-rc.12 released on Oct 31, 2018
https://github.com/immutable-js/immutable-js/releases
https://immutable-js.github.io/immutable-js/
不变的数据一旦创建就无法更改,从而导致应用程序开发更加简单,无防御性复制,并能够以简单的逻辑实现高级的备忘和更改检测技术。
持久数据提供了一个可变API,该API不会就地更新数据,而是总会产生新的更新数据。
Immutable.js 提供了许多持久不变数据结构,包括:List, Stack, Map, OrderedMap, Set, OrderedSet 和 Record 。
$ yarn add immutable
$ npm i -S immutable
const { Map } = require('immutable');
const map1 = Map({ a: 1, b: 2, c: 3 });
const map2 = map1.set('b', 50);
map1.get('b') + " vs. " + map2.get('b');
// 2 vs. 50
Performance tradeoffs
性能折衷
尽管值相等在许多情况下很有用,但它具有与引用相等不同的性能特征。
了解这些折衷方案可以帮助您决定在每种情况下都应使用哪种方法,尤其是在用于记忆某些操作时。
比较两个集合时,价值相等可能需要考虑每个集合中每个项目的时间复杂度为O(N)。
对于大量的价值收集,这可能会成为一项昂贵的操作。 尽管如果两者不相等且几乎不相似,则可以很快确定不平等。
相反,在比较两个具有引用相等性的集合时,仅需要比较对内存的初始引用,这不是基于集合的大小,而是具有O(1)的时间复杂度。
检查引用是否相等总是非常快,但是仅由于两个集合不是引用相等的,并不排除它们可能是值相等的可能性。
React.PureComponent
immutable objects 便于快速比较嵌套的数据
https://reactjs.org/docs/react-api.html#reactpurecomponent
refs
©xgqfrms 2012-2020
www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!