reactjs - Error React Redux Toolkit:为什么我不能使用 .findIndex 更改数组对象的键值
问题描述
我正在使用 React Redux Toolkit 创建一个简单的待办事项应用程序。如果用户单击复选框,它将更改 .isComplete 的键值。我使用 .findIndex 来查找特定任务的索引。但问题是我无法更改数组第一个对象的键值,而其余的都很好。
const initialState = [
{
_id: uuidv4(),
title: 'Learn React',
desc: 'Nec ullamcorper sit amet risus nullam eget felis.',
isComplete: false,
priority: 'Minor',
created: 'johndoe',
assigned: 'J Doe',
dateCreated: new Date(),
dateDue: new Date(),
},
{
_id: uuidv4(),
title: 'Learn Node JS',
desc:
'Risus nec feugiat in fermentum posuere urna. Est ante in nibh mauris cursus mattis molestie a. Malesuada pellentesque elit eget gravida cum.\n\nUt lectus arcu bibendum at varius vel pharetra vel.\n\nFacilisis magna etiam tempor orci eu lobortis elementum nibh tellus. Rutrum tellus pellentesque eu tincidunt tortor. Imperdiet nulla malesuada pellentesque elit eget gravida cum sociis natoque.',
isComplete: false,
priority: 'High',
created: 'johndoe',
assigned: 'J Doe',
dateCreated: new Date(),
dateDue: new Date(),
},
];
JS
export const taskSlice = createSlice({
name: 'tasks',
initialState: initialState,
reducers: {
completeTodo: (state, action) => {
const taskIndex = state.findIndex((e) => e._id === action.payload);
if (taskIndex) {
state[taskIndex].isComplete = true;
}
},
},
});
解决方案
一般情况下,findIndex
如果-1
什么也没找到,0
则为第一项。你会跳过它,if
因为它是一个错误的值。
正确的大概是
const taskIndex = state.findIndex((e) => e._id === action.payload);
if (taskIndex !== -1) {
state[taskIndex].isComplete = true;
}
但你也可以
const task = state.find((e) => e._id === action.payload);
if (task) {
task.isComplete = true;
}
推荐阅读
- java - 使用 httpurlconnection 调用第三方 api
- mongodb - 来自 mongodb 模块的 Metricbeat 异常
- c# - 使用 SqlQuerySpec 对 Cosmos DB 运行两个查询的有效方法是什么?
- ftp - 如何在 jftp 脚本中建立活动连接?
- python - PyTorch:RuntimeError:函数 MulBackward0 在索引 0 处返回无效梯度 - 预期类型为 torch.cuda.FloatTensor 但得到了 torch.FloatTensor
- javascript - 从 html 中检索凭证代码
- html - Unable to remove the page outer margin of the pdf which is created using html/css in flutter iOS
- php - PHP 图像类型验证
- javascript - 如何通过单击按钮来编辑表格中的单元格
- javascript - 合并数组中的重复对象并合并每个对象的子数组