• 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;

  • 相关阅读:
    axios入门
    SpringBoot统一异常处理详解
    文件的随机读写函数:ftell & rewind
    C++容器
    【蓝桥杯省赛真题46】python数字币统计 中小学青少年组蓝桥杯比赛 算法思维python编程省赛真题解析
    SQL语法之AND & OR 运算符
    【JAVAEE基础学习(16)】--简述ElasticSearch
    C#中反射的使用总结
    性能分析-java虚拟机性能监控
    C1. Pokémon Army (easy version)
  • 原文地址:https://blog.csdn.net/poguanba/article/details/134241712