使用React的不可变助手和Immutable.js

时间:2014-12-04 04:09:42

标签: javascript reactjs reactjs-flux

我正在研究助焊剂应用程序,并正在考虑采用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');

1 个答案:

答案 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对象不是。