阅读preact 源码 hooks文件夹
// b是一个数组,假如想更改b要传一个新的数组,
// 数组是一个对象,用一个新的对象,触发重新渲染
function a () {
const [b, setB] = useState([])
}
Preact。一个mini react
preact
render
看是否和上一个组件相同,相同不执行hook,更新state 不同,执行effect。重置索引 先调用清理副作用,后调用副作用
diffed
下一个浏览器循环执行 paintEffects 保存effects到pendingEffects,下一个浏览器绘画执行
reducer
useEffect
依赖变了,方法放到pendingEffects中,浏览器下一个绘画的时候执行
useLayoutEffect
用于浏览器绘画后立即执行的副作用,比如获取dom大小 在屏幕重绘前执行
useMemo
依赖变了,执行函数获取最新值。更新参数和函数
useCallback useMemo实现,传 useCallback
useContext 组件在context变化时,收到通知并更新
flushAfterPaintEffects 消费重绘副作用