UNPKG

@jingoz/zlight

Version:

一个轻量级的仿 zustand 的 React 状态管理库

2 lines (1 loc) 1.42 kB
(function(t,i){typeof exports=="object"&&typeof module<"u"?i(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],i):(t=typeof globalThis<"u"?globalThis:t||self,i(t.zlight={},t.react))})(this,function(t,i){"use strict";var h=Object.defineProperty;var p=(t,i,r)=>i in t?h(t,i,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[i]=r;var a=(t,i,r)=>p(t,typeof i!="symbol"?i+"":i,r);class r{constructor(){a(this,"isInitialized",!1);a(this,"initialState",{});a(this,"state",{});a(this,"listeners",new Set);a(this,"setState",e=>{const n=typeof e=="function"?e(this.state):e;if(!this.isInitialized){this.initialState=n,this.state=n,this.isInitialized=!0;return}if(!Object.is(n,this.state)){const c=this.state;this.state=Object.assign({},c,n);for(const d of this.listeners)d(this.state,c)}});a(this,"getState",()=>this.state);a(this,"getInitialState",()=>this.initialState);a(this,"subscribe",e=>(this.listeners.add(e),()=>this.listeners.delete(e)))}}function o(s){const e=new r,n=s(e.setState,e.getState);return e.setState(n),e}const S=s=>s;function l(s,e=S){return i.useSyncExternalStore(s.subscribe,()=>e(s.getState()),()=>e(s.getInitialState()))}function u(s){const e=o(s),n=c=>l(e,c);return Object.assign(n,e),n}const f=s=>u(s);t.VanillaStoreApi=r,t.create=f,t.createStateImpl=u,t.createStoreVanillaImpl=o,t.useStore=l,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})});