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