上传
This commit is contained in:
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"persist.js","sources":["store/plugins/persist.js"],"sourcesContent":["const PERSIST_PREFIX = 'pinia_'\r\n\r\n/**\r\n * 创建持久化插件\r\n * @param {Object} [globalOptions] 全局配置\r\n * @returns {Function} Pinia 插件\r\n */\r\nexport function createPersistedState(globalOptions = {}) {\r\n\treturn ({\r\n\t\tstore\r\n\t}) => {\r\n\t\t// 读取 store 的 $persist 选项\r\n\t\tconst persistOptions = store.$persist\r\n\t\tif (!persistOptions) return\r\n\r\n\t\tconst {\r\n\t\t\tkey = `${PERSIST_PREFIX}${store.$id}`,\r\n\t\t\t\tpaths = null, // 指定持久化的字段,null 表示全部\r\n\t\t} = typeof persistOptions === 'object' ? persistOptions : {}\r\n\r\n\t\t// 从本地存储恢复数据\r\n\t\ttry {\r\n\t\t\tconst saved = uni.getStorageSync(key)\r\n\t\t\tif (saved) {\r\n\t\t\t\tconst data = JSON.parse(saved)\r\n\t\t\t\tstore.$patch(data)\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tconsole.error(`[Pinia Persist] 恢复 ${store.$id} 失败:`, e)\r\n\t\t}\r\n\r\n\t\t// 监听状态变化并自动保存\r\n\t\tstore.$subscribe(\r\n\t\t\t(_mutation, state) => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst toSave = paths ?\r\n\t\t\t\t\t\tpaths.reduce((obj, path) => {\r\n\t\t\t\t\t\t\tconst keys = path.split('.')\r\n\t\t\t\t\t\t\tlet value = state\r\n\t\t\t\t\t\t\tfor (const k of keys) {\r\n\t\t\t\t\t\t\t\tvalue = value?.[k]\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tsetNestedValue(obj, keys, value)\r\n\t\t\t\t\t\t\treturn obj\r\n\t\t\t\t\t\t}, {}) : {\r\n\t\t\t\t\t\t\t...state\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\tuni.setStorageSync(key, JSON.stringify(toSave))\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tconsole.error(`[Pinia Persist] 保存 ${store.$id} 失败:`, e)\r\n\t\t\t\t}\r\n\t\t\t}, {\r\n\t\t\t\tdetached: true\r\n\t\t\t}\r\n\t\t)\r\n\t}\r\n}\r\n\r\n/**\r\n * 设置嵌套对象的值\r\n */\r\nfunction setNestedValue(obj, keys, value) {\r\n\tlet current = obj\r\n\tfor (let i = 0; i < keys.length - 1; i++) {\r\n\t\tif (!(keys[i] in current)) {\r\n\t\t\tcurrent[keys[i]] = {}\r\n\t\t}\r\n\t\tcurrent = current[keys[i]]\r\n\t}\r\n\tcurrent[keys[keys.length - 1]] = value\r\n}"],"names":["uni"],"mappings":";;AAAA,MAAM,iBAAiB;AAOhB,SAAS,qBAAqB,gBAAgB,IAAI;AACxD,SAAO,CAAC;AAAA,IACP;AAAA,EACF,MAAO;AAEL,UAAM,iBAAiB,MAAM;AAC7B,QAAI,CAAC;AAAgB;AAErB,UAAM;AAAA,MACL,MAAM,GAAG,cAAc,GAAG,MAAM,GAAG;AAAA,MAClC,QAAQ;AAAA;AAAA,IACT,IAAG,OAAO,mBAAmB,WAAW,iBAAiB,CAAE;AAG5D,QAAI;AACH,YAAM,QAAQA,cAAAA,MAAI,eAAe,GAAG;AACpC,UAAI,OAAO;AACV,cAAM,OAAO,KAAK,MAAM,KAAK;AAC7B,cAAM,OAAO,IAAI;AAAA,MACjB;AAAA,IACD,SAAQ,GAAG;AACXA,0BAAc,MAAA,SAAA,kCAAA,sBAAsB,MAAM,GAAG,QAAQ,CAAC;AAAA,IACtD;AAGD,UAAM;AAAA,MACL,CAAC,WAAW,UAAU;AACrB,YAAI;AACH,gBAAM,SAAS,QACd,MAAM,OAAO,CAAC,KAAK,SAAS;AAC3B,kBAAM,OAAO,KAAK,MAAM,GAAG;AAC3B,gBAAI,QAAQ;AACZ,uBAAW,KAAK,MAAM;AACrB,sBAAQ,+BAAQ;AAAA,YAChB;AACD,2BAAe,KAAK,MAAM,KAAK;AAC/B,mBAAO;AAAA,UACP,GAAE,CAAE,CAAA,IAAI;AAAA,YACR,GAAG;AAAA,UACH;AAEFA,wBAAG,MAAC,eAAe,KAAK,KAAK,UAAU,MAAM,CAAC;AAAA,QAC9C,SAAQ,GAAG;AACXA,+EAAc,sBAAsB,MAAM,GAAG,QAAQ,CAAC;AAAA,QACtD;AAAA,MACL;AAAA,MAAM;AAAA,QACF,UAAU;AAAA,MACV;AAAA,IACD;AAAA,EACD;AACF;AAKA,SAAS,eAAe,KAAK,MAAM,OAAO;AACzC,MAAI,UAAU;AACd,WAAS,IAAI,GAAG,IAAI,KAAK,SAAS,GAAG,KAAK;AACzC,QAAI,EAAE,KAAK,CAAC,KAAK,UAAU;AAC1B,cAAQ,KAAK,CAAC,CAAC,IAAI,CAAE;AAAA,IACrB;AACD,cAAU,QAAQ,KAAK,CAAC,CAAC;AAAA,EACzB;AACD,UAAQ,KAAK,KAAK,SAAS,CAAC,CAAC,IAAI;AAClC;;"}
|
||||
Reference in New Issue
Block a user