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

React 学习——zustand切片拆分

模块比较大的时候,功能相对独立的时候,可以单独抽离出来;

对在组件中应用没有任何影响。

import { useEffect } from 'react'
import { create } from 'zustand'

// counter store
const createCounterStore = (set=>{
  return {
    count: 0,
    add:()=>{ set(state => ({ count: state.count + 1 })) },
    sub:()=>{ set(state => ({count: state.count - 1})) },
  }
}) 
// channel store
const createChannelStore = (set=>{
  return {
    channelList: [],
    fetchChannelList: async()=>{
      const res = await fetch('http://geek.itheima.net/v1_0/channels')
      const jsonData = await res.json()
      set(state => ({ channelList: jsonData.data.channels }))
    }
  }
}) 
// 组合
const useStore = create((...a)=>{
  return {
    ...createCounterStore(...a),
    ...createChannelStore(...a)
  }
}) 
const App = () => {
  const { count,add,sub,channelList,fetchChannelList } = useStore();
  useEffect(()=>{
    fetchChannelList()
  },[])
  return (
    <div className="home">
      <button onClick={add}>+</button>
      <span>{count}</span>
      <button onClick={sub}>-</button>
      <ul>
        {channelList.map(item=>(<li key={item.id}>{item.name}</li>))}
      </ul>
    </div>
  )
}
export default App


http://www.kler.cn/a/284745.html

相关文章:

  • 提取神经网络数学表达式
  • 【金融风控】特征评估与筛选详解
  • 【CSS】“flex: 1“有什么用?
  • Systemd: disable和mask的区别
  • 怎么监控员工电脑?分享5个监控员工电脑的绝佳方法(立竿见影!建议收藏!)
  • 解决C盘空间不足的三种方案
  • BUUCTF PWN wp--jarvisoj_level0
  • 入行「游戏策划」,该从何处下手?
  • 【FPGA】入门学习路线
  • 【QNX+Android虚拟化方案】114 - QNX /dev/switch 节点创建 及 读写功能实现实例
  • 3d网格补洞算法
  • 实测数据处理(RD算法处理)——SAR成像算法系列(十)
  • Python编码系列—Python中的安全密码存储与验证:实战指南
  • 每日一题,零基础入门FPGA——逻辑门
  • NFC射频--天线设计
  • 集成电路学习:什么是BIOS基本输入/输出系统
  • pytorch 均方误差损失函数
  • C_08_动态内存申请
  • 未来城市生活:科技与人文的交响
  • Docker 实战加速器(紧急情况!镜像库全面失效,一招解决Docker无法下载)
  • 云轴科技ZStack产品升级,浙江分公司产品发布会成功举办
  • tailwindcss
  • 《黑神话:悟空》:30%抽成真相
  • 如何使用 AWS CLI 为私有 AWS S3 存储桶中的对象创建预签名 URL
  • 2016年系统架构师案例分析试题五
  • 前端面试——八股文