
获得徽章 0
赞了这篇沸点
Zustand蛮适合作为接触源码的第一站,如果你看Zustand代码你会发现代码真的简单(我第一次看的时候也是蛮惊讶的),所以说并不是越复杂的东西越好,状态管理库的未来一定是简洁易用、符合直觉。
而Zustand的核心是useSyncExternalStoreWithSelector,重点要理解它是解决React18并发更新带来的的Tearing问题。useSyncExternalStoreWithSelector在 use-sync-external-store 库里实现的,会根据React版本来选择是否采用原生的实现,如果React18以下的版本会采用React Hooks实现,因此阅读React源码我非常建议从useSyncExternalStoreWithSelector看起,因为不包含很多上下文,容易看懂,会给你很多信心,源代码在 ->
github.com,对应小册第7章,理解并发更新可以移步第6章,想要自己写一个状态库并不复杂,重点是要理解这些概念。
而Zustand的核心是useSyncExternalStoreWithSelector,重点要理解它是解决React18并发更新带来的的Tearing问题。useSyncExternalStoreWithSelector在 use-sync-external-store 库里实现的,会根据React版本来选择是否采用原生的实现,如果React18以下的版本会采用React Hooks实现,因此阅读React源码我非常建议从useSyncExternalStoreWithSelector看起,因为不包含很多上下文,容易看懂,会给你很多信心,源代码在 ->
展开
评论
3
赞了这篇沸点
赞了这篇沸点
我们经常可以在代码中看到胡乱使用 useMemo 的例子,例如对于非常简单的计算逻辑许多开发者也会使用 useMemo 来进行包裹,然而 useMemo 并非没有消耗,它会依次对比 deps 看是否有变化来决定是否复用上一次的计算结果,以及需要缓存相关的状态到 Fiber Node 上。
React 官方的建议是如果你不知道怎么用你可以使用 console.time 来测量代码的执行时间,如果时间大于等于 1ms 则代表添加 useMemo 来缓存计算结果是有意义的。
React 官方的建议是如果你不知道怎么用你可以使用 console.time 来测量代码的执行时间,如果时间大于等于 1ms 则代表添加 useMemo 来缓存计算结果是有意义的。
展开
评论
4
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章