useState
useState
是最常用的 react hooks,所有与画面绘制相关的状态,都应该使用 useState
来维护
#
更新 state设置值的方式有两种
更新 state
#
注意:所有 set 更新 state 的方法需要保证以下两点:#
1. 新 set 的值必须与旧值不等如果值不变,组件不会重绘
#
2. set 操作不应该出现在组件的同步调用堆栈中调用 setState 会触发组件重绘,又再次执行函数,形成死循环
#
试一试下面的例子Live Editor
Result
试着修改 age?是不是无法输入?试试用注释的代码来更新。
#
初始化 state除了将值直接传给 useState
,当初始化逻辑比较复杂时,我们可以传递函数,函数的返回值作为初始化 state
这段逻辑如果写成下面那样
当 props
不变时,两者逻辑是等价的,但想象一下如果 dataSource
有 1w 条数据,那么此时组件重绘,下面那种写法又要重新计算 1w 次,性能上是不可接受的。
#
试一试下面的例子Live Editor
Result
点击 force update 按钮,看看耗时?
#
如何规划 state- 如果 state 之间有逻辑关联,放在同一个 state 中更好
- 如果 state 之间没有逻辑关系,拆的越小越好