有关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

0
1
lxy一定上20k
非常感谢老师的解答!我明白啦
2022-03-09
共1条回复

React16组件化+测试+全流程 实战在线账本项目

轻松上手,从设计图到上线,精通组件化思维和组件测试

713 学习 · 177 问题

查看课程