阅读preact 源码 hooks文件夹

·

1 min read

// 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 消费重绘副作用