zustand subscribeWithSelector 使用
zustand subscribeWithSelector 使用
Zustand 提供了一个名为 subscribeWithSelector
的高级功能,允许你在订阅状态时使用一个选择器函数(selector function),类似于 Redux 的 reselect
。选择器函数能够更高效地追踪和计算仅关心的部分状态,减少不必要的渲染。
下面是如何使用 subscribeWithSelector
的示例:
首先,确保你已经在项目中安装了 zustand
并创建了一个 store:
然后,你可以创建一个组件并使用 subscribeWithSelector
:
在这个例子中,subscribeWithSelector
接收两个参数:
store
:这是你想要订阅的 zustand store,通常是一个返回 store 的 hook,如useCatStore
。selector
:这是一个函数,它接收整个 store 的状态作为参数,并返回你关心的那一部分状态。
每次 store 的状态发生改变时,selector
会被重新执行,只有当返回值与上一次执行的结果不同时,组件才会重新渲染。这样可以帮助提高大型应用中的性能。
subscribe 订阅
这段代码是使用 React Hooks(结合 Zustand 库)监听状态变化并据此更新组件样式背景色的示例。下面是详细的解释:
-
useEffect
是 React 的内置 Hook,用于处理副作用操作,如订阅事件、定时任务、DOM 更新等。在这个例子中,useEffect
的第二个参数为空数组[]
,意味着这个副作用仅在组件挂载时执行一次。 -
useFoodStore.subscribe
是来自 Zustand 库的方法,用于订阅状态 store 的变化。当 store 中的状态(state)发生变化时,提供的回调函数会被执行。 -
equalityFn: shallow
表示在比较新旧状态时使用浅比较(shallow equality check),即只有当引用地址改变时才认为状态发生了变化。 -
fireImmediately: true
表示订阅后立即执行一次回调函数,无论状态是否已经改变。 -
最后,
useEffect
的返回函数unsub
是一个取消订阅的方法,当组件卸载时会自动执行,以防止内存泄漏,确保不再接收无效的状态更新通知。
总结:这段代码在组件挂载时订阅 useFoodStore
中的 fish
状态变化,根据鱼的数量变化动态更改组件的背景色,并在组件卸载时清理订阅。
__EOF__

本文链接:https://www.cnblogs.com/longmo666/p/18091989.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)