当前位置: 首页 > news >正文

zustand管理工具--React

npm i zustand

1.函数参数必须返回一个对象 对象内部编写状态数据和方法

2.set是用来修改数据的专门方法必须调用它来修改数据

import { useEffect } from "react";
import { create } from "zustand";// 1. 创建store
const goodsStore = create((set) => ({count: 1,inc: () => set((state) => ({ count: state.count + 1 })),channelList: [],// 异步方法fetchChannelList: async () => {const res = await fetch(URL);const jsonData = await res.json();set({ channelList: jsonData.data.channels });},
}));// 2. 绑定store到组件
function Counter() {const { count, inc, channelList, fetchChannelList } = goodsStore();useEffect(() => {fetchChannelList()}, [fetchChannelList])return (<div><button onClick={inc}>{count}</button><ul>{channelList.map((item) => {return <li key={item.id}>{item.name}</li>;})}</ul></div>);
}export default Counter;

3.切片模式--模块化

import { useEffect } from "react";
import { create } from "zustand";// 1. 创建store
const goodsStore = (set) => ({count: 1,inc: () => set((state) => ({ count: state.count + 1 })),
});const channelListStore = (set) => ({channelList: [],// 异步方法fetchChannelList: async () => {const res = await fetch(URL);const jsonData = await res.json();set({ channelList: jsonData.data.channels });},
});const useStore = create((...a) => ({...goodsStore(...a),...channelListStore(...a),}));// 2. 绑定store到组件
function Counter() {const { count, inc, channelList, fetchChannelList } = useStore();useEffect(() => {fetchChannelList();}, [fetchChannelList]);return (<div><button onClick={inc}>{count}</button><ul>{channelList.map((item) => {return <li>{item}</li>;})}</ul></div>);
}export default Counter;

http://www.lryc.cn/news/221960.html

相关文章:

  • Elasticsearch内存分析
  • Alert警告提示(antd-design组件库)简单使用
  • Linux提权方法总结
  • 力扣第300题 最长递增子序列 c++ 动态规划题 附Java代码
  • Si3262 集成低功耗SOC 三合一智能门锁应用芯片
  • linux rsyslog介绍
  • 项目部署之安装和配置Canal
  • 基于Skywalking的全链路跟踪实现
  • Spark Core
  • [算法日志]图论: 广度优先搜索(BFS)
  • Xilinx FPGA SPIx4 配置速度50M约束语句(Vivado开发环境)
  • Linux Shell和权限
  • Git同时配置Gitee和GitHub
  • IGP高级特性简要介绍(OSPF-上篇)
  • Oracle-Ogg集成模式降级为经典模式步骤
  • 链表面试OJ题(1)
  • [极客大挑战 2019]Upload 1
  • OpenFeign讲解+面试题
  • 嬴图 | LLM+Graph:大语言模型与图数据库技术的协同
  • 微信小程序下载文件和转发文件给好友总结
  • 一文掌握 Apache SkyWalking
  • 外贸网站优化常用流程和一些常识
  • Hive的时间操作函数
  • 【Web安全】CORS跨域资源共享漏洞
  • IntelliJ IDEA 如何修改默认Maven仓库地址
  • Vue3 <script setup>是什么?作用?
  • 2.9 CSS 响应式布局
  • vue使用websocket与springboot通信
  • ChatGPT 实际上是如何工作的?
  • 【SSD1306 OLED屏幕测试程序 (开源)orangepi zero2 全志H616 】.md updata: 23/11/07