微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 react.js 状态下改变数组内的对象?

如何解决如何在 react.js 状态下改变数组内的对象?

我在尝试更新状态时遇到问题。 这是我的代码

const [todos,setTodos]= useState([])

useEffect(() => {
  setTodos([
{id:1,title: '',notes: [{id: 1,description: 'this is a simple description'}]}
])
},[])

我的目标是向待办事项数组添加注释。 我试试这样

const i = todos.findindex((t) => t.id === parseInt(id));
const newArr = todos[i].notes[0].push(note);
setTasks(newArr);

但它不起作用 newArr 给了我新状态的索引说明。 请帮忙 提前致谢

解决方法

如果您想让它工作,您可以执行以下操作:

const newArr = todos[i].notes.push(note)

但这不是推荐的方式。

向 notes 数组添加新项目的最佳方法是使用 object.assign 或展开运算符,以免直接改变整个数组。像下面这样的东西:

const newArr = [...todos[i],note]

并使用这种方式来改变整个任务数组。

我认为 ar here 已经得到了很好的描述,如果您想了解更多关于为什么应该使用扩展运算符而不是推送的信息。

,

我创建了完美运行的 this。你需要做的是获取todo id并推送到它的笔记。此处 todo 状态已更新,但未调用渲染方法。为了调用 render 方法,我再次调用了 setTodo

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。