javascript - Netflix Falcor 与 Immutable.js 一起工作?

标签 javascript reactjs immutable.js falcor

我阅读了有关 immutable.js 的内容,以及它可以通过实现 shouldComponentUpdate() 检查 props 或状态是否已更改,从而在您的 React 应用程序中为您带来的性能优势。

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

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

最佳答案

嗯,我一直在想同样的事情。问题是 falcor 是 json 图形数据 getter ,而 immutablejs 是关于序列化/反序列化数据以用于 react 组件。它应该在两个或某种 api 之间找到一个共同点,使它们在获取数据 (falcor) 和处理 (immutablejs) 数据之后进行通信。

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

'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)
        });
    })
}

之后在 actions 中你可以用 immutablejs 序列化它

'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;

关于javascript - Netflix Falcor 与 Immutable.js 一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32539976/

相关文章:

javascript - 检查字符串是否包含关键字数组

javascript - 如何找到unicode组合?

reactjs - 设置 react-styleguidist、创建 React App、Typescript、Material UI 和 styled-components

javascript - 在不可变对象(immutable对象)中添加具有键值对的新对象

react-native - mobx 和 Redux 的优缺点是什么,特别是在 React-Native 环境中?

javascript - 通过 AJAX 调用将数据加载到 Knockout 组件中

javascript - 如何将图像移动到 html/javascript 中的鼠标位置?

javascript - 在 react native 自定义按钮中有条件地呈现组件

javascript - ReactJS 只能设置状态不能获取状态

javascript - 不可变 JS - 在嵌套映射中获取值