首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Netflix Falcor与Immutable.js合作?

Netflix Falcor与Immutable.js合作?
EN

Stack Overflow用户
提问于 2015-09-12 22:33:37
回答 1查看 574关注 0票数 3

我读到过immutable.js,以及通过实现shouldComponentUpdate()来检查属性或状态是否发生更改,它可以在react应用程序中为您带来的性能优势。

另外,我想在我的应用程序中使用Netflix Falcor,是否可以在falcor模型中以某种方式使用immutable.js集合?

或者,有没有一种方法可以用falcor模型实现shouldComponentUpdate(),它可以检查更改,并且会很快(就像immutable.js一样)?

EN

回答 1

Stack Overflow用户

发布于 2015-09-18 21:15:23

嗯,我也想了一阵子了。事实是,falcor是json图形数据抓取器,而immutablejs是序列化/反序列化数据,以便在react组件中使用。它应该在两者或某种api之间找到一个共同点,使它们在获取数据(Falcor)和随后处理(Immutablejs)数据时进行通信。

到目前为止,我认为最好的方法是让falcor模型声明为api方法,您可以将该方法作为promises传递给actions(flux),我使用alt作为实现,因此在api中,webUtilAPI.js可以如下所示

代码语言:javascript
复制
'use strict';
 let Api = exports;
 import { Promise } from 'es6-promise';
 import { falcor } from 'falcor';

 Api.getFalcorData = () => {
     return new Promise((resolve) => {
        var model = new falcor.Model({
            source: new falcor.HttpDataSource('/model.json')
        });

        model.get("somedata").then((response) => {
            resolve(response.json.somedata)
        });
    })
}

之后,在动作中,您可以使用immutablejs将其序列化

代码语言:javascript
复制
'use strict';
import UUID        from 'node-uuid';
import Immutable   from 'immutable';
import alt from '../alt';
import webUtilAPI  from '../api/webUtilAPI';

class ActionCreators {

    constructor() {

        this.generateActions(
            'falcorToImmutable',
        );
    }
    getFalcor() {

        var that = this;

        return webUtilAPI.getFalcorData()
        .then(success(arr) => {
            var data = Immutable.fromJS({ id: UUID.v4(), arr })
            that.alt.getActions('ActionCreators').falcorToImmutable(data);
        });
    }
}
module.exports = ActionCreators;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32539976

复制
相关文章

相似问题

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