为什么需要框架适配? 为了提升开发体验,能够更好地利用框架的特性和框架的调试能力 完整代码 'use strict'; var React = require('react'); var vanilla = require('zustand/vanilla'); const identity = (arg) => arg; function useStore(api, selector = identity) { const slice = React.useSyncExternalStore( api.subscribe, () => sel...
摘要: 在本文中,我们逐步理解并实现状态管理的核心。首先,定义了记录当前状态(state)、获取(getState)、修改(setState)的三大功能。然后添加了发布订阅模式,当状态变化时通知所有订阅者。在今天就讨论了一组包含 enhance、createContext、createSlice 的 JavaScript 变体代码。后续章节将涵盖适配 React 框架的代码。文中还提到了性能优化,如避免重复更新状态。这些概念共同构成了 Zustand 库的基石。
源码内部是 TS 的,我们暂时先只关注最核心的 JS 功能实现 你问我怎么只看 JS ?当然是看编译后的产物啦 完整代码 'use strict'; const createStoreImpl = (createState) => { let state; const listeners = /* @PURE */ new Set(); const setState = (partial, replace) => { const nextState = typeof partial === "function" ? partial(stat...