Tag: immutable.js

何时使用.toJS()与Immutable.js和Flux?

我正在尝试使用ImmutableJS和我的React / Flux应用程序。 我的商店是Immutable.Map对象。 我想知道我应该在哪一点使用.toJS() ? 应该是当商店的.get(id)返回? 或与.get('member') ?

如何使用Redux的Immutable.js?

Redux框架正在使用reducer来响应某个操作来更改应用程序状态。 关键要求是reducer不能修改现有的状态对象; 它必须产生一个新的对象。 不好的例子 : import { ACTIVATE_LOCATION } from './actions'; export let ui = (state = [], action) => { switch (action.type) { case ACTIVATE_LOCATION: state.activeLocationId = action.id; break; } return state; }; 很好的例子 : import { ACTIVATE_LOCATION } from './actions'; export let ui = (state = [], action) => { switch (action.type) { […]

为什么JavaScript中的不变性如此重要(或需要)?

我目前正在研究React JS和React Native框架。 当我读到Facebook的Flux实现和Redux实现时,我遇到了Immutability或Immutable-JS库 。 问题是,为什么不变性如此重要? 什么是错误的变异对象? 它不是简单吗? 举一个例子,让我们考虑一个简单的新闻阅读器应用程序。 开幕式是新闻头条列表视图。 如果我最初设置一个带有值的对象数组 。 我无法操纵它。 这就是不变性原则所说的,对吗?(如果我错了,请纠正我)。 但是,如果我有一个新的新闻对象,必须更新? 通常情况下,我可以刚刚添加对象到数组中。 我在这种情况下如何实现? 删除商店并重新创build它? 是不是将一个对象添加到数组中一个更便宜的操作? PS:如果这个例子不是解释不变性的正确方法,请让我知道什么是正确的实际例子。 我正在努力学习这里的东西。 请赐教:)

如何用ImmutableJS更新列表中的元素?

这是官方文件说的 updateIn(keyPath: Array<any>, updater: (value: any) => any): List<T> updateIn(keyPath: Array<any>, notSetValue: any, updater: (value: any) => any): List<T> updateIn(keyPath: Iterable<any, any>, updater: (value: any) => any): List<T> updateIn(keyPath: Iterable<any, any>, notSetValue: any, updater: (value: any) => any): List<T> 正常的web开发人员(不是function程序员)不会理解这一点! 我非常简单(对于非function性方法)的情况。 var arr = []; arr.push({id: 1, name: "first", count: 2}); arr.push({id: 2, name: "second", […]