reactjs - 不可变-JS : Merge a List of Maps by key

标签 reactjs flux immutable.js redux

我有一个应用程序状态对象,它看起来像这样:

const initialState = Immutable.fromJS({
    $isLoading: true,
    currentPage: 0,
    totalPages: 1,
    results: []
});

当我从服务器获取时(使用 fetch API),我想将 $isLoading 设置为 false,并合并 currentPagetotalPages 来自响应。到目前为止,使用merge 就已经足够简单了。我不太确定如何优雅地合并 results 节点。它们是 Immutable.Map,并且应该基于 _id 属性进行合并。有没有一种优雅的方法可以将其融入到这段代码中?

return state.merge({
    $isLoading: false,
    currentPage: res.page,
    totalPages: res.pages,
    results: 'something' // Take old results, merge with res.results
});

最佳答案

您应该能够将合并函数更改为 mergeDeep:

https://facebook.github.io/immutable-js/docs/#/Map/mergeDeep

关于reactjs - 不可变-JS : Merge a List of Maps by key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31686827/

相关文章:

javascript:使用 EcmaScript 6/immutable js 左合并两个对象

javascript - 不可变JS : Merging two Lists by values

javascript - 为什么我在系统中第一次运行 react js 项目时收到此错误消息?

reactjs - 如何使用 react-i18next 触发强制更新?

reactjs - Prime React 文件上传组件 setUploadedFiles 意外行为

reactjs - 如何在 react 中访问页面刷新时的状态值?

reactjs - 为什么不使用 cookie 而不是 Redux?

reactjs - 我应该在商店中存储永不更改(引导)的数据吗?

javascript - 往返商店的通量事件?

javascript - 为什么我不应该在 React Redux 中使用 toJS() ? (mapStateToProps)