hooks组件-useState
hooks组件-useState
hook组件的本质就是函数组件,但是基于各种hook让其动态化!
常用hook:
useReducer:redux
useCallback
useMemo:去做一些优化。
useRef:使用ref
useImperativeHandle:拿到子组件的属性和方法
useLayoutEffect:
useState以及底层:每次都是全新私有上下文
每次渲染,都会是一个全新的作用域私有上下文
那useState如何实现这一点?一个方法拿到的机制是不一样的?
怎么通知视图更新?拿到我的属性,也知道哪个组件,那所以也就是把属性传过来,组件函数重新执行。
内部多个useState?全局肯定会有多个状态,依赖于每个useState<->每个状态肯定会有多个映射。
例题:
2000ms后输出num,结果还是0.
整体更新&异步
- useState是整体更新
- 异步
当前代码块执行完了再批处理刷新
更建议拆解变量
自带内部优化机制
Object.is判等若相等不再更新
判断是否相等。使用Object.is去判断,比如NaN,===是false,但是Object.is是true。
*第一个参数是函数
prev是上次函数执行结果的返回值
*useState初始值的惰性化处理
也是将参数做成函数