首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >redux-form与immutable.js

redux-form与immutable.js
EN

Stack Overflow用户
提问于 2016-02-25 14:56:37
回答 3查看 1.6K关注 0票数 2

在使用immutable.js和redux-form时是否有不需要调用.toJS()的方法?

我可以看到,在本期上建议的方法是在将Map对象传递给表单之前调用Map对象上的.toJS()

代码语言:javascript
复制
getFormState: (state, reduxMountPoint) => state.get(reduxMountPoint).toJS()

这难道不损害从使用immutable.js和限制回忆录中获得的性能好处吗?

我很想知道这对性能的影响,是否仍然值得在大量的应用中使用immutable.js?有没有其他不依赖.toJS()的方法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-25 15:22:37

在我思考redux形式的未来时,我一直在反复讨论是否在内部使用ImmutableJS。我简要地接受了这样的想法:通过某些外观,我可以以某种方式让相同的代码库使用这两种代码库,但最终,接口太不一样了,ImmutableJS接口非常冗长,这是由于不喜欢本机语言语法。

制作使用ImmutableJS的替代版本将需要更改几乎每一行代码,这将是维护的噩梦。

除非有人能告诉我,使用ImmutableJS的性能优势超过了将.toJS()负担给人们的成本(多数?)选择不使用ImmutableJS的人,我认为更好的做法是,就像Redux本身一样,对存储库保持中立。

还有其他不依赖.toJS()的方法吗?

因此,要回答您的问题:不,如果管理Redux还原程序的库期望使用普通的javascript对象,并且您使用ImmutableJS作为Redux存储,则必须自己进行转换。

希望有更好的答案..。

编辑: Redux的版本6支持开箱即用的ImmutableJS .

票数 4
EN

Stack Overflow用户

发布于 2016-02-28 16:46:44

正如Erik所提到的,遗憾的是,Redux-Form (尚未)没有内置的解决方案,部分原因是表单状态和模型状态是一起的,而不是单独的实体。

如果您可以分离表单和模型状态,那么使用Immutable.JS的模块化解决方案就变得更加可行。这就是我创建反应-保留-形式的原因。

下面是如何使用React Redux-Form拥有一个不可变的模型还原器:

代码语言:javascript
复制
import { createStore, combineReducers } from 'redux';
import { createModelReducer } from 'react-redux-form/lib/immutable';
import Immutable from 'immutable';

const store = createStore(combineReducers({
  'user': createModelReducer('user', Immutable.Map())
}));

export default store;

如果您有一个表示您的模型的现有不可变减速器,您可以用不变的modeled()装饰器来装饰它:

代码语言:javascript
复制
import { createStore, combineReducers } from 'redux';
import { modeled } from 'react-redux-form/lib/immutable';

// existing immutable reducer
import userReducer from '../reducers/user-reducer';

const store = createStore(combineReducers({
  'user': modeled(userReducer, 'user')
}));

export default store;
票数 2
EN

Stack Overflow用户

发布于 2017-01-05 10:30:02

通过从redux-form/immutable导入而不是redux-form,您可以使用redux-form的“不可变”版本。

以下链接:http://redux-form.com/6.4.3/examples/immutable/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35630781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档