首页 > 解决方案 > 为什么这种非变异方式在 React.js 中有效?

问题描述

我试图理解为什么这个例子是个好主意。我正在学习 React,我发现这个函数将complete属性从todo. 我的问题是为什么这会起作用?因为我们有 const todo,它是现实中被改变的那个,而不是newTodoList我们返回的那个。我猜各自todo的 fromnewTodoList也以某种方式发生了变化,但我不明白这是如何工作的,因为我们再次更改了新创建的const todo

function toggleTodo(id){
    const newTodoList = [...todos] 
    const todo = newTodoList.find(todo => todo.id === id)
    todo.complete = !todo.complete
    setTodos(newTodoList)
  }

标签: javascriptarraysreactjs

解决方案


根据MDN Web Docs onconstconst声明创建了一个值的只读引用。这并不意味着它持有的值是不可变的——只是变量标识符不能被重新分配。例如,在内容是对象的情况下,这意味着可以更改对象的内容(例如,它的属性)。

由于const todo是一个对象,您可以更改其属性(即todo.complete


推荐阅读