javascript - 为什么这种非变异方式在 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)
}
解决方案
根据MDN Web Docs onconst
,const
声明创建了一个值的只读引用。这并不意味着它持有的值是不可变的——只是变量标识符不能被重新分配。例如,在内容是对象的情况下,这意味着可以更改对象的内容(例如,它的属性)。
由于const todo
是一个对象,您可以更改其属性(即todo.complete
)