更新 React Redux 减速器中的数组对象

2024-02-10

这应该很简单,但我没有找到我想要的简单答案。我有一个减速机:

const posts = (state = null, action) => {
  switch(action.type){
    case "PUBLISH_POST":
        return state;
    case "UNPUBLISH_POST":
        return state;
    default:
        return postList;
  }
}

我有一个帖子列表ID的和一个status。我正在发送我的帖子 ID,但无法弄清楚简单更新的逻辑status已单击的项目从 0 到 1。我发现了很多半解决方案,但它们看起来都冗长且丑陋 - 在这种情况下实现它的最短/最好的方法是什么?

示例数据:

{
    id:1,
    user:"Bob Smith",
    content:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vulputate mauris vitae diam euismod convallis. Donec dui est, suscipit at dui vitae, sagittis efficitur turpis. ",
    status:1 
}

假设你的action是这样的:

{
  type: 'UNPUBLISH_POST',
  payload: {
    id: 1,
    user: 'Bob Smith',
    content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vulputate mauris vitae diam euismod convallis. Donec dui est, suscipit at dui vitae, sagittis efficitur turpis. ',
    status: 1
  }
}

只需使用扩展运算符 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator为了它:

const posts = (state = null, action) => {
  switch(action.type){
    case "PUBLISH_POST":
    case "UNPUBLISH_POST":
        const index = this.state.findIndex(post => post.id === action.payload.id)

        return [
           ...state.slice(0, index), // everything before current post
           {
              ...state[index],
              status: action.type === 'PUBLISH_POST' ? 1 : 0,
           },
           ...state.slice(index + 1), // everything after current post
        ]
    default:
        return postList;
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更新 React Redux 减速器中的数组对象 的相关文章

随机推荐

  • 使用 WinAPI 挂钩对程序进行沙箱处理

    我想对本机代码进行沙箱处理 并使用 WinAPI 和系统函数的挂钩来阻止或允许该程序执行某些操作 例如读 写文件 修改 Windows 注册表 使用 Internet 连接 这是一种良好且安全的方法吗 该程序绕过这样的安全层有多困难 我已经
  • StringReplace 的二进制版本

    我正在尝试在保存大量数据的 RawByteString 上运行 AnsiStrings StringReplace 其中一些数据需要替换 它会起作用 除了在 StringReplace 内部它将我的字符串转换为 PAnsiChar 因此搜索
  • 带有特定顺序和百分比注释的 ggplot2 饼图

    我有一个如下所示的数据框 make model cnt toyota camry 10 toyota corolla 4 honda city 8 honda accord 13 jeep compass 3 jeep wrangler 5
  • 事务可以在同一个 SQL Server 中跨多个数据库工作吗?如果是这样,这是分布式事务吗?

    事务可以在同一个 SQL Server 中跨多个数据库工作吗 如果是这样 这是分布式事务吗 或者会基本BEGIN TRANSACTION work 同一实例中跨多个DB的事务是本地事务 BEGIN TRANSACTION 会工作得很好
  • Java 8 Collectors.toMap SortedMap

    我正在使用 Java 8 lambda 并想使用Collectors toMap返回一个SortedMap 我能想到的最好的办法就是拨打以下电话Collectors toMap使用假人的方法mergeFunction and mapSupp
  • Javascript 将动态图像从 URL 绘制到画布元素上

    我正在尝试使用其 URL 将动态 PNG 图像 由 PHP 脚本生成的图像 绘制到 Canvas 元素上 我无法真正发布我正在测试的页面的确切 URL 因为您必须登录该网站 我正在使用的动态图像 URL 之一的示例是 http www we
  • 一个关于C++中类型强制的简单问题

    给定一个函数原型和一个类型定义 int my function unsigned short x typedef unsigned short blatherskite 标准定义了以下情况 int main int argc char ar
  • Heroku 上静态资产的重定向子域

    我希望 myapp com blog 重定向到 www myapp com blog 我已经安装了 Refraction 以在机架层执行子域重定向 这在 Heroku for blog 上不起作用 因为 blog 中的文件是静态资产 有什么
  • 简单分隔符之间的匹配,但分隔符本身不匹配

    我正在查看文本文件中的 JSON 数据 除了使用正则表达式来获取引号之间的值之外 我不想做任何事情 我只是用它作为帮助练习正则表达式的一种方法 并达到了这一点 看起来它应该很简单 但事实证明它不是 至少对我和办公室的其他一些人来说 我已经在
  • 用 Guice 代替抽象工厂?

    我是 Guice 的新手 我想知道我能走多远 我有一个界面UserInfo具有多个实现类GoogleUserInfo FacebookUserInfo TwitterUserInfo等等 这些类是使用工厂创建的 public class U
  • 使用 Python + Selenium 通过 while 循环点击下一页

    我正在尝试浏览名为 iens 的网站上的不同页面 我正在使用 selenium python 单击 volgende 荷兰语中的意思是 下一个 但我希望我的程序继续单击下一个 直到使用 while 循环没有剩余页面为止 所以在这种情况下 我
  • SQL Server MDF 文件 - 如何备份

    这是场景 我们有一个包含三个数据库的公司网站 它运行 SQL Server 2005 这三个数据库链接到 MDF 文件 有人试图直接复制 粘贴这些 MDF 文件之一 该文件对文件进行了某种锁定 从而导致只读错误 我们通过分离 重新连接来修复
  • PostgreSQL、pg_dump 和 pg_restore 以及对象依赖顺序

    我有个问题 有没有办法强制 PostgreSQL 9 3 备份 恢复模式以正确的依赖对象顺序 例如 在创建物化视图本身之前 我需要创建一个在物化视图中使用的函数 我在模式恢复时遇到错误 因为物化视图是在创建函数本身之前创建的 Thanks
  • pycharm 中的 matplotlib 外部文档

    如何在 pycharm 中添加 matplotlib 外部文档 到目前为止尝试添加 http matplotlib org api http matplotlib org api 模块 名称 api html matplotlib 模块 名
  • SignalR 和 IIS 回收

    我想创建一个使用 SignalR 向客户端发送通知的服务器 使用组 假设我的网站被回收 这些组会发生什么 因为它们不持久 您需要将您的组保存在外部永久存储中 在这里查找更多详细信息 http www asp net signalr over
  • Graphviz .dot 节点排序

    我正在构建一个 epsilon NFA 来使用规范结构识别正则表达式 我使用子图对正则表达式的各个部分进行分组 运算符给我带来了特别的麻烦 因为 dot 决定移动节点的顺序 我尝试添加边缘权重以强制特定边缘变短以保持边缘的顺序一致 但这似乎
  • python 中的低通滤波器

    我正在尝试将 Matlab 代码转换为 Python 我想实施fdesign lowpass Python 中的 Matlab 这个 Matlab 代码的确切替代品是什么scipy signal firwin demod 1 a mod n
  • jQuery 验证:在提交之前验证后删除元素?

    我有一个城市的 SVG 地图 单击该地图时 会在我的表单中的 div 中创建隐藏元素 我正在使用jQuery 验证插件 http docs jquery com Plugins Validation验证我的表格 为了确保用户单击了地图的某个
  • 关于GCC链接器搜索顺序的一些问题

    我对 gcc 链接顺序有一些疑问 GCC man 说链接器默认从左到右搜索符号 而不重复搜索 这是我的测试 main c include
  • 更新 React Redux 减速器中的数组对象

    这应该很简单 但我没有找到我想要的简单答案 我有一个减速机 const posts state null action gt switch action type case PUBLISH POST return state case UN