我正在开发一个通量应用程序,正在考虑采用不可变.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对象显然不是。