通过如下的方式安装
npm install zustand
我们可以在项目中的任意位置,创建一个 ts 文件,用于管理状态,在该文件中,首先我们需要引入 zustand,并利用 create
方法创建一个 store
import { create } from 'zustand'
create
方法创建的是一个自定义 hook,因此,通常情况下,我们会以 use
作为开头。我们可以通过它返回基础数据类型、对象、函数等。如下面的案例所示,我定义了一个位置信息的状态,以及一个更新位置信息的方法
10import { create } from 'zustand'2030type Store = {40x: number,50y: number,60update: (event: MouseEvent) => void70}8090export const useStore = create<Store>((set) => ({10x: 0,11y: 0,12update: (event: MouseEvent) => set({13x: event.pageX,14y: event.pageY15}),16}))17
然后我们可以在任意组件中引入刚才创建好的自定义 hook useStore
,结合 UI 完成案例的完整逻辑,完整代码以及案例演示如下所示。
10import { useEffect } from 'react'20import { useStore } from './store'3040export default function Counter() {50const { x, y, update } = useStore()6070useEffect(() => {80window.addEventListener('mousemove', update)90return () => {10window.removeEventListener('mousemove', update)11}12}, [])1314return (15<div className='text-center'>16鼠标当前位置17<div className='font-bold text-2xl mt-4'>{x}, {y}</div>18</div>19)20}