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