有关hooks的问题
来源:1-1 课程导读
lxy一定上20k
2022-03-08
老师好!最近我在调试代码的时候发现一个问题,就是每一次打印的todolist都会比我想象的慢一步
setTodolist(todoList => [...todoList, data])
console.log(todoList)
但当我把代码换成下面的内容,这种情况就不会发生了
setTodolist(todoList => {
console.log([…todoList, data])
return […todoList, data]
})
请问这是为什么呢
写回答
1回答
-
张轩
2022-03-09
同学你好 请记住 更新状态 是异步的,也就是说你直接在更新状态的函数后面 console,得到的还是旧的值。
第二个写法在回调中写,假如在 setTodolist 的回调中,是可以拿到之前的状态的,你 console 的是 console.log([…todoList, data]),所以这里是可以打印出新的值的。
文档:https://reactjs.org/docs/hooks-reference.html#usestate
012022-03-09
相似问题