// mini-zustand.jsfunction createUseStore(func) { let state = func(setState); let listeners = null; function setState(newState) { // 更改 state if (typeof newState === 'function') { newState = newState(state); } state = { ...state, ...newState }; listeners && listeners.forEach(listener => listener()); } function useStore(selectFunc) { const [, setId] = useState(0); const updateId = useCallback(() => { setId(id => id + 1); }, []); useEffect(() => { if (!listeners) { listeners = new Set(); } listeners.add(updateId); return () => { listeners.delete(updateId); } }, [updateId]); return selectFunc(state); } return useStore;}// userStore.jsconst useUserStore = createUseStore(setState => ({ userName: '', getUserName: async () => { const userName = await queryUserName(); setState({ userName }); }}));export default useUserStore;// App.jsxfunction App(params) { const userName = useUserStore(store => { return store.userName; });}