react-remux
Version:
7 lines (6 loc) • 2.67 kB
JavaScript
/*!
* react-remux.js v0.0.4
* (c) 2018-2019 空鱼
* Released under the MIT License.
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react-redux"),require("remux-core"),require("rmagix-lib"),require("react")):"function"==typeof define&&define.amd?define(["exports","react-redux","remux-core","rmagix-lib","react"],t):t((e=e||self)["react-remux"]=e["react-remux"]||{},e.reactRedux,e.remuxCore,e.rmagixLib,e.React)}(this,(function(e,t,r,o,n){"use strict";var a="default"in n?n.default:n;const{ACTION_REFRESH:c,subscribe:s}=r.subscribeOtherStorePlugin,u=(e,t)=>{const o=(e=>{const t=[];return e(new Proxy({},{get(e,r){t.push(r)}})),t})(e),n=(e=>{const t=Object.keys(e)[0];return r.globalStore.get(t)})(t),a=n._namespace,u=n.getDispatch(),l=o.filter(e=>!(e.includes("loading")||e===a)),i=r.globalStore.getAll();Object.keys(i).filter(e=>l.includes(e)).forEach(e=>{s(i[e],()=>{u({type:c})},a)})},l=e=>{return(t,...o)=>{u(e,t);const n=r.globalStore.getStates();return e(n,...o)}},i=(...e)=>{o.invariant(!1,"当前react-redux版本过低,如果想使用hooks,请升级到react-redux@^7.1.1 redux@^4.0.4")};class d extends a.Component{constructor(e){super(e);const{model:t,...n}=e,{namespace:a}=t;o.invariant(a,`namespace except get string,but get ${typeof a}`),this.state={store:r.createStore({model:t,...n})}}componentWillUnmount(){this.state.store.unmount()}render(){return a.createElement(t.Provider,{store:this.state.store.getStore()},this.props.children)}}const g=t.useDispatch||i;Object.keys(r).forEach((function(t){"default"!==t&&Object.defineProperty(e,t,{enumerable:!0,get:function(){return r[t]}})})),Object.defineProperty(e,"shallowEqual",{enumerable:!0,get:function(){return t.shallowEqual}}),e.Provider=d,e.connect=function(e,...r){const o=l(e);return t.connect(o,...r)},e.useDispatch=g,e.useModel=(e,a,c={})=>{const{namespace:s}=e;o.invariant(s,`namespace except get string,but get ${typeof s}`);const{useHooks:u,...d}=c;r.globalStore.getManager().has(e.namespace)||r.createStore({model:e,...d});const g=r.globalStore.get(e.namespace).getStore(),p=(n.createContext||i)({store:g,storeState:g.getState()});return{state:((e,r=t.shallowEqual)=>{return t.createSelectorHook(p)(l(e),r)})(a||function(t){return t[e.namespace]}),dispatch:t.createDispatchHook(p)()}},e.useSelector=(e,r)=>{return(t.createSelectorHook||i)()(l(e),r)},e.useSelectorSE=(e,r=t.shallowEqual)=>{return(t.createSelectorHook||i)()(l(e),r)},e.useStore=e=>{const o=void 0===e,a=o?r.globalStore.getAll():r.globalStore.get(e),c=(n.createContext||i)({store:a}),s=o?void 0:c;return t.createStoreHook(s)()},Object.defineProperty(e,"__esModule",{value:!0})}));