问题:在隐身模式、或者用户未启用的情况下,使用localStorage可能会导致浏览器直接报错,怎么办?
方法:使用try-catch包裹
代码示例:
import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) let defaultCity = '汉中' try { if (localStorage.city) { defaultCity = localStorage.city } } catch (e) {} export default new Vuex.Store({ state: { city: defaultCity }, mutations: { changeCity (state, city) { state.city = city try { localStorage.city = city } catch (e) {} } }, actions: { changeCity (ctx, city) { // ctx为上下文,city是传来的参数 ctx.commit('changeCity', city) } } })