diff --git a/src/assets/js/syncLocalstorageData.js b/src/assets/js/syncLocalstorageData.js new file mode 100644 index 000000000..e522e2b02 --- /dev/null +++ b/src/assets/js/syncLocalstorageData.js @@ -0,0 +1,31 @@ +import cacheUtils from '@/assets/js/utils/cacheUtils' + +const { setLocItem /*getLocItem*/ } = cacheUtils + +export function syncLocalstorageData(data, { name = '', release = false, encrypt = false } = {}) { + if (name === '' && (typeof name).toLowerCase() !== 'string') { + console.error(`[syncLocalstorage] ${name} is not a string.`) + return + } + + // todo 离开页面释放变量(后续再看看做还是不做) + // eslint-disable-next-line no-empty + if (release) { + } + return new Proxy( + data, //投保人信息, + { + set(target, p, newValue, receiver) { + const res = Reflect.set(target, p, newValue, receiver) + if (res) { + if (encrypt) setLocItem(name, JSON.stringify(target)) + else localStorage.setItem(name, JSON.stringify(target)) + } + return res + }, + get(target, property, receiver) { + return Reflect.get(target, property, receiver) + } + } + ) +}