javascript - 在与服务器通信时,将 Immutable.js 对象与 JSON 进行相互转换是否很常见

标签 javascript redux immutable.js

我是 Redux 新手,并尝试使用 Immutable.js 对象作为我的存储。我发现自己在处理从服务器获取的数据时不可避免地会使用 fromJS 将 JSON 转换为 Immutable,然后将其转换回 JSON 以发布到服务器。无论潜在的性能成本如何,这都是正确的方法吗?

最佳答案

你说的好像很有道理。使用 Redux 时的典型场景是,您在 thunk 中间件中执行服务器请求,然后使用从服务器收到的数据分派(dispatch)操作。然后您可以将数据转换为 Immutable.js 并将其添加到您的 reducer 中的状态。

简短的伪代码示例:

// Component somewhere
state.dispatch(fetchData());

// Actions
function fetchData() {
    function (dispatch, getState) {
        // Use something to fetch from server 

        dispatch({ type: 'FETCH_REQUEST' })
        return fetch('/path/to/server')
            .then(function (data) {
                dispatch({ type: 'FETCH_SUCCESS', data: data })
            })
    }
}

// Reducer
function reducer(state=Map(), action) {
    switch(action.type) {
        case 'FETCH_SUCCESS':
            // Could also take just a part of the data. 
            // Could also create things like List, Map
            // for specific parts of the data.
            return fromJS(action.data)
        default:
            return state;
    }
}

关于javascript - 在与服务器通信时,将 Immutable.js 对象与 JSON 进行相互转换是否很常见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40747032/

相关文章:

javascript - 从 Immutable.js Map 中删除多个嵌套键的最佳方法是什么

javascript - 如何在禁用的字段集中启用一个按钮

reactjs - Redux 子组件不更新父组件状态

redux - 为什么使用 redux 保持不可变状态

Python 不可变类型 ids 和 is 语句

javascript - 在 Immutable.js 的 Map 中按属性对子对象进行排序的正确方法是什么

javascript - 是否可以在 NodeJs 中要求子 sdk 库?

Javascript 在本地存储中保存和检索数组数据

javascript - 将 AudioBuffer 转换为 ArrayBuffer/Blob 以供 WAV 下载

reactjs - 如何在一个状态内合并多个 reducer ?