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)
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对象不是.