• zustand管理工具--React


    npm i zustand

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

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

    1. import { useEffect } from "react";
    2. import { create } from "zustand";
    3. // 1. 创建store
    4. const goodsStore = create((set) => ({
    5. count: 1,
    6. inc: () => set((state) => ({ count: state.count + 1 })),
    7. channelList: [],
    8. // 异步方法
    9. fetchChannelList: async () => {
    10. const res = await fetch(URL);
    11. const jsonData = await res.json();
    12. set({ channelList: jsonData.data.channels });
    13. },
    14. }));
    15. // 2. 绑定store到组件
    16. function Counter() {
    17. const { count, inc, channelList, fetchChannelList } = goodsStore();
    18. useEffect(() => {
    19. fetchChannelList()
    20. }, [fetchChannelList])
    21. return (
    22. <div>
    23. <button onClick={inc}>{count}button>
    24. <ul>
    25. {channelList.map((item) => {
    26. return <li key={item.id}>{item.name}li>;
    27. })}
    28. ul>
    29. div>
    30. );
    31. }
    32. export default Counter;

    3.切片模式--模块化

    1. import { useEffect } from "react";
    2. import { create } from "zustand";
    3. // 1. 创建store
    4. const goodsStore = (set) => ({
    5. count: 1,
    6. inc: () => set((state) => ({ count: state.count + 1 })),
    7. });
    8. const channelListStore = (set) => ({
    9. channelList: [],
    10. // 异步方法
    11. fetchChannelList: async () => {
    12. const res = await fetch(URL);
    13. const jsonData = await res.json();
    14. set({ channelList: jsonData.data.channels });
    15. },
    16. });
    17. const useStore = create((...a) => ({
    18. ...goodsStore(...a),
    19. ...channelListStore(...a),
    20. }));
    21. // 2. 绑定store到组件
    22. function Counter() {
    23. const { count, inc, channelList, fetchChannelList } = useStore();
    24. useEffect(() => {
    25. fetchChannelList();
    26. }, [fetchChannelList]);
    27. return (
    28. <div>
    29. <button onClick={inc}>{count}button>
    30. <ul>
    31. {channelList.map((item) => {
    32. return <li>{item}li>;
    33. })}
    34. ul>
    35. div>
    36. );
    37. }
    38. export default Counter;

  • 相关阅读:
    【Python】OpenCV-图像滤波
    信息化带来的制造业生产管理系统究竟有哪些作用呢?
    Leetcode 128. 最长连续序列
    大专专科毕业设计前端网站源码]基于html的美食网站(js)(静态网页)
    foil算法
    Python150题day10
    vim 多行注释
    Asp-Net-Core开发笔记:进一步实现非侵入性审计日志功能
    让学指针变得更简单(一)
    SpringBoot3项目框架搭建
  • 原文地址:https://blog.csdn.net/poguanba/article/details/134241712