我正在研究助焊剂应用程序,并正在考虑采用immutable.js来维持状态。我看到react提供了自己的帮助器来更新不可变对象(http://facebook.github.io/react/docs/update.html),但是无法说明它与不可变的自己的setIn和updateIn方法有多大不同(即,我已经可以比较了)具有===的对象如果它们随setIn变化则为se。是否有理由将react helper与immutable.js一起使用?它只是语法糖吗?
TL; 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');
答案 0 :(得分:8)
React.addons.update
不适用于Immutable.js值;它works with plain JavaScript objects and arrays。
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中的类型是使用special数据structures实现的,以提高性能和空间效益;显然,React.addons.update消耗和生成的普通JavaScript对象不是。