首页 > 解决方案 > 如何在 Redux 中创建固定宽度的覆盖数组?

问题描述

我有一个 React 按钮,它在多文件上传时生成代码并将它们存储在 Redux 中,每次你删除一个文件时它都会添加新代码,这就是 3 次上传后状态的样子:

codes: ["a141", "a196", "a953"]

我想一次最多存储 3 个代码,如果用户一次上传 7 个文件,我想简单地移动 4 个第一个代码,这样最近的代码总是在数组的末尾。我知道我可以通过混合推动和移位或连接来实现这一点,但是我如何在不可变的 Redux 中实现这一点?我应该在减速机中这样做吗?现在我接受一切,像这样:

case "get_codes":
  return {
    ...state,
    codes: state.codes.concat(action.data.code),
};  

tl;博士我如何限制 Redux 中数组中的项目数,我一直在谷歌搜索这个主题,但找不到任何具体的内容:/

标签: javascriptarraysreactjsreduxconcat

解决方案


我想这就是你要找的

codes: [...state.codes.concat(action.data.code).slice(-3)]

这样,您可以创建一个包含新旧代码的新数组,然后获取列表中的前 3 个。


推荐阅读