| | |
| | | /** |
| | | * LocalStorage - 混合App模式,本地存储同步工具 |
| | | * 用于区分不同开发环境读取不同数据 |
| | | * @tutorial 注意:混合App模式中,不建议使用 Taro.setStorageSync 存储数据 |
| | | * 因为Taro API无法区分不同开发环境,测试环境与正式环境存储的本地数据,读取时会串通 |
| | | * 本方法解决方式在于,给键名增加了开发环境的前缀,例如:AiSim.lc@***、AiSim.wc@***、AiSim.rb@*** |
| | | * @author Tevin |
| | | */ |
| | | |
| | |
| | | export class LocalStorage { |
| | | constructor() { |
| | | this._data = { |
| | | prefixType: '', |
| | | prefixType: process.env.TARO_ENV === 'h5' ? 'h5' : 'wx', |
| | | }; |
| | | } |
| | | |
| | |
| | | this._data.prefixType = prefixType; |
| | | } |
| | | |
| | | load(key) { |
| | | load(key, defaultType = 'obj') { |
| | | const name = 'AiSim.' + this._data.prefixType + '@' + key; |
| | | return JSON.parse(Taro.getStorageSync(name) || '{}'); |
| | | const data = Taro.getStorageSync(name); |
| | | if (data) { |
| | | return JSON.parse(data); |
| | | } else { |
| | | if (defaultType === 'obj') { |
| | | return {}; |
| | | } else if (defaultType === 'arr') { |
| | | return []; |
| | | } |
| | | } |
| | | } |
| | | |
| | | loadArr(key) { |
| | | return this.load(key, 'arr'); |
| | | } |
| | | |
| | | save(key, value) { |
| | |
| | | return matches; |
| | | } |
| | | |
| | | // 清除本地存储工具保存的所有数据 |
| | | cleanAll() { |
| | | const info = Taro.getStorageInfoSync(); |
| | | const prefixReg = /^AiSim\.[a-zA-Z]+@/; |
| | | info.keys.forEach(storageKey => { |
| | | if (prefixReg.test(storageKey)) { |
| | | Taro.removeStorageSync(storageKey); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | } |
| | | |
| | | export const $localStorage = new LocalStorage(); |
| | | export const $localStorage = new LocalStorage(); |