封裝本地函數

1、封裝本地存儲函數

/**

 * 用來儲存 localStorage

 * @param {string} id 唯一id,例如商家的id

 * @param {string} key 標示

 * @param {string} value 新增&修改的值

 */

export function saveToLocal(id, key, value) {

  let seller = window.localStorage.__seller__; // __seller__ 存放所有的值

  if (!seller) { // 第一次存儲 --> {"1234567":{}}

    seller = {}; // 如果seller不存在則等於空

    seller[id] = {}; // 每個id都是單獨的object

  } else {

    seller = JSON.parse(seller); // --> {"1234567":{"favorite":true}}

    if (!seller[id]) { // 拿到值之後判斷是否由當前這個商家

      seller[id] = {}; // 沒有的話就重新搞一個對象存放這個商家

     }

   }

   seller[id][key] = value; // id object 的 key就是我們的value

   window.localStorage.__seller__ = JSON.stringify(seller);

};

 

/**

 * 用來讀取 localStorage

 * @param {*} id 唯一id

 * @param {*} key 標識

 * @param {*} def 讀取不到數據返回的默認值

 */

export function loadFromLocal(id, key, def) {

  let seller = window.localStorage.__seller__;

  if (!seller) {

    return def; // 還是返回一個false

  }

  seller = JSON.parse(seller)[id];

  if (!seller) { // 如果取不到我們傳入的 id

    return def;

  }

  // 如果ret裏面有這個唯一標示爲undfined的時候,可能商家已經換了我們 返回一個false

  let ret = seller[key];

  return ret || def;

};

2、引到應用組件中  import {saveToLocal, loadFromLocal} from 'common/js/store'; // 引入存儲方法loadFromLocal

data() {

      return {

        // favorite: false // 寫死的

        favorite: (() => { // 用一個立即執行函數讀取本地數據

          return loadFromLocal(this.seller.id, 'favorite', false);

        })()

      };

    },

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章