在线代理浏览器网站,国际品牌的ui设计公司,广西建设网站培训,使用WordPress做论坛npm i zustand
1.函数参数必须返回一个对象 对象内部编写状态数据和方法
2.set是用来修改数据的专门方法必须调用它来修改数据
import { useEffect } from react;
import { create } from zustand;// 1. 创建store
const goodsStore create((set) …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 (divbutton onClick{inc}{count}/buttonul{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 (divbutton onClick{inc}{count}/buttonul{channelList.map((item) {return li{item}/li;})}/ul/div);
}export default Counter;