UNPKG

@sanpjs/runtime

Version:

San Pro Runtime

70 lines 2.23 kB
"use strict"; /** * @file san store 类的基本封装 * store 没有初始化数据,会导致多写一写代码。。 */ Object.defineProperty(exports, "__esModule", { value: true }); exports.connectComponent = exports.Store = exports.keyZipObject = void 0; const san_store_1 = require("san-store"); class Store extends san_store_1.Store { constructor(options) { super(options); } /** * 初始化数据 * @param {Object} data 初始化数据 */ initData(data) { // 这里有风险,如果 store 类的实现变了名称,会影响 // 升级注意! if (typeof data === 'object') { const raw = this.raw; Object.keys(data).forEach(name => { if (raw[name]) { throw new Error('Store.initData: ' + name + ' exists!'); } else { raw[name] = data[name]; } }); } return this; } /** * 批量添加action */ addActions(actions) { const addAction = this.addAction.bind(this); if (typeof actions === 'object') { Object.keys(actions).forEach(name => { addAction(name, actions[name]); }); } else { throw new Error('Store.addActions: actions type should be an object'); } return this; } } exports.Store = Store; const keyZipObject = (keyList) => { const result = {}; keyList.forEach(v => (result[v] = v)); return result; }; exports.keyZipObject = keyZipObject; const connectComponent = (store, component) => { const keyMap = (0, exports.keyZipObject)(Object.keys(store.raw)); const actionMap = (0, exports.keyZipObject)(Object.keys(store.actions)); const connectStore = san_store_1.connect.createConnector(store); return connectStore(keyMap, actionMap)(component); }; exports.connectComponent = connectComponent; /** * 默认的全局 Store 实例 * 通常我们认为在一个应用应该具有一个全局唯一的 store,管理整个应用状态 * * @type {Store} */ exports.default = new Store({ name: '__default__' }); //# sourceMappingURL=Store.js.map