javascript - Immutable js - Redux-Saga 按键查找项目并更新值

标签 javascript reactjs redux redux-saga immutable.js

我在我的 React 应用程序中使用 redux-saga 和 immutable.js。 我有通知数组保存整个应用程序的 redux 操作创建的每个通知的数据。

我的不可变 redux 存储和通知数组如下所示:

global : 
  notifications: 
   0:
    key: 21339298 // random key to use like id
    show: true
    type: success
    message: Operation was successfull
   1: {key..., show...}
   ...

我想通过“key”查找单个通知并将其“show”值更新为 false。

我阅读了 immutable.js 文档,但它很难理解。 所以我尝试了下面的代码片段。但我没有得到结果。

return state
    .updateIn(['notifications', 
        ns => ns.findIndex(function (item) {
            return item.get("key") === action.notificationId;}
        ), 'show'], false
    );

return state
    .update(
        list.findIndex(function (item) {
            return item.get("key") === action.notificationId;
        }), function (item) {
            return item.set("show", false);
        }
    );

我如何找到一个项目并更新它的一些值?

最佳答案

解决方案是将查找索引和更新分开,先查找索引,然后将其与setIn一起使用。下面是解决方案。

case NOTIFY_HIDE:
        let notifications = state.get('notifications');
        let notificationIdx = notifications.findIndex(function (item) {
            return item.get('key') === action.notificationId;
        });
        return state
            .setIn(['notifications', notificationIdx, 'show'], false);

关于javascript - Immutable js - Redux-Saga 按键查找项目并更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54615745/

相关文章:

javascript - Google MarkerClusterer 不显示标记

javascript - 如何使用 playwright 等待请求并验证响应?

javascript - 如何在ReactJS中获取下拉菜单的值

reactjs - 如何设计 Redux 存储和操作?

JavaScript 变量列表和编辑器

javascript - 绘制虚线和直线作为div的背景

javascript - CSS 不透明度过渡不适用于 Safari

javascript - 从具有 2 个属性的异步存储中获取 key

javascript - 使用 div 的两种方式数据绑定(bind)

javascript - 提供者组件不会重新渲染