liveSave.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import store from './index.js' // 引入 Vuex store
  2. const whiteList = ['tokenID'] // 持久化存储白名单
  3. /**
  4. * 存储store缓存(持久化)
  5. */
  6. const saveLifeData = (key, value) => {
  7. uni.setStorageSync(key, value)
  8. }
  9. /**
  10. * 获取store缓存(持久化)
  11. * * @property {String|Array|NULL} key 对应key
  12. */
  13. const getLifeData = (key) => {
  14. let $uStoreKey = [];
  15. if(key&&typeof key === 'string') {
  16. $uStoreKey = [key]
  17. }else if(key&&typeof Array.isArray(key)) {
  18. $uStoreKey = key
  19. } else {
  20. try {
  21. $uStoreKey = store.state ? Object.keys(store.state) : [];
  22. } catch (e) {}
  23. }
  24. // 在应用初始化时检查本地存储并同步更新到 Vuex 的状态中
  25. $uStoreKey.some(keyName => {
  26. const savedState = uni.getStorageSync(keyName);
  27. if (savedState) {
  28. store.commit('$uStore', {
  29. name: keyName,
  30. value: savedState
  31. });
  32. }
  33. })
  34. if(key&&typeof key === 'string') {
  35. return store?.state?.[key] || ''
  36. }
  37. }
  38. /**
  39. * 清空store缓存(持久化)
  40. */
  41. const removeLifeData = () => {
  42. let $uStoreKey = [];
  43. try {
  44. $uStoreKey = store.state ? Object.keys(store.state) : [];
  45. } catch (e) {}
  46. $uStoreKey.some(keyName => {
  47. const foundKey = whiteList.find(key => key === keyName);
  48. !foundKey?uni.removeStorageSync(keyName):''
  49. })
  50. }
  51. export {
  52. saveLifeData,
  53. getLifeData,
  54. removeLifeData
  55. }