您如何在开关语句(Redux还原器)中更改数组的ID



,所以我有一系列的毒品。当我删除todo时,我正在尝试更改其余项目的ID即使应该是1。

,项目也将具有2个ID

这就是我目前拥有的 -

case REMOVE_TODO: {
      const newList = state.todos.filter(item => item.id !== action.id);
      for (let i = 0, newId = 0; i > newList.length; i++, newId++) {
        newList[i].id = newId;
        console.log(newList[i].id); //nothing gets logged
      }
      return {
      ...state,
      todos: newList
      };
    }

而不是正确更改项目ID,即使我安装了我刚刚更改的内容,也没有发生任何改变,也什么也没有改变。

在for循环中的迭代器看起来像是一个问题。i > newList.length应为i < newList.length。另外,您可以使用地图在新清单上循环并获得一组较新的数组。

您无需loop即可。当您有大量数据时,这将是一个很好的做法。

const index = state.todos.findIndex(item => item.id == action.id);
const newList = state.todos.splice(index,1);
return {
      ...state,
      todos: newList
      };

最新更新