将 React 的不可变助手与 Immutable.js一起使用

Using React's immutable helper with Immutable.js

本文关键字:js Immutable 一起 React 不可变      更新时间:2023-09-26

我正在开发一个通量应用程序,正在考虑采用不可变.js来维护状态。 我看到 react 提供了自己的帮助程序来更新不可变对象 (http://facebook.github.io/react/docs/update.html),但无法说出它与不可变的自己的 setIn 和 updateIn 方法有何不同(即,我已经可以将对象与 === 进行比较,如果它们与 setIn 一起更改)。 是否有理由将反应助手与不可变.js一起使用? 只是句法糖吗?

DR是:

var map = Immutable.fromJS({bar: 'baz'});
map2 = React.addons.update(map, {
        bar: {$set: 'foo'}
    });

不同于

var map = Immutable.fromJS({bar: 'baz'});
map2 = map.set('bar', 'foo');

React.addons.update不适用于不可变.js值;它适用于普通的JavaScript对象和数组。

var map = { bar: 'baz' };
var map2 = React.addons.update(map, {
  bar: {$set: 'foo'}
});
console.log(map2); // A plain JS object of value `{bar: 'foo'}`

Immutable.js中的类型是使用特殊的数据结构实现的,以实现性能和空间优势;React.addons.update使用和生成的普通JavaScript对象显然不是。