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

Fen*_*ter 7 javascript reactjs reactjs-flux

我正在研究一个flux应用程序,我正在考虑采用immutable.js来维护状态.我看到react提供了自己的帮助器来更新不可变对象(http://facebook.github.io/react/docs/update.html),但是无法告诉它与immutable自己的setIn和updateIn方法有什么不同(也就是说,我已经可以将对象与===进行比较,如果它们随setIn变化.是否有理由将react helper与immutable.js一起使用?它只是语法糖吗?

TL; DR是:

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

不同于

var map = Immutable.fromJS({bar: 'baz'});
map2 = map.set('bar', 'foo');
Run Code Online (Sandbox Code Playgroud)

Mic*_*ley 8

React.addons.update不适用于Immutable.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'}`
Run Code Online (Sandbox Code Playgroud)

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