7

我正在开发一个通量应用程序,并正在考虑采用immutable.js来维护状态。我看到 react 提供了自己的帮助器来更新不可变对象(http://facebook.github.io/react/docs/update.html),但不知道它与不可变自己的 setIn 和 updateIn 方法有什么不同(即,我已经可以将对象与 === 进行比较,以确定它们是否随 setIn 更改)。是否有理由将 react 助手与 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');
4

1 回答 1

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'}`

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

于 2014-12-04T04:31:29.383 回答