vuex-persistedstate:如何在 vuex-persistedstate 中使用 getter?

Jun*_*Jun 0 javascript vue.js vue-router vuex

我使用vuex-persistedstate。但是吸气剂不起作用。我在 Vue.js Devtools 中检查了状态,状态是存在的。但是 getter 没有数据。像这样。

Chrome 中的 Vue.js Devtools

那么如何使用 getter 呢?

Vuex 中的 index.js

import createPersistedState from 'vuex-persistedstate'

Vue.use(Vuex)

export default new Vuex.Store({
  modules: {
    login,
    segments,
    itemList,
    orderList
  },
  plugins: [
    createPersistedState()
  ]
})
Run Code Online (Sandbox Code Playgroud)

vue-router 中的 index.js(我想使用 getter 进行登录状态检查)

import store from '@/store'

Vue.use(Router)

const ifAuthenticated = (to, from, next) => {
  if (store.getters.loginStatus) {
    next()
  } else {
    next({
      path: '/login',
      query: { redirect: to.fullPath }
    })
  }
}
Run Code Online (Sandbox Code Playgroud)

login.js(Vuex 中的存储模块)

const state = {
  loginStatus: false,
  email: '',
  isStaff: false,
  company: '',
  token: ''
}
const getters = {
  loginStatus: () => state.loginStatus,
  email: () => state.email,
  isStaff: () => state.isStaff,
  company: () => state.company,
  token: () => state.token
}
Run Code Online (Sandbox Code Playgroud)

itt*_*tus 5

我认为您正在访问外部state对象。请尝试添加state为函数参数:

   const getters = {
      loginStatus: (state) => state.loginStatus,
      email: (state) => state.email,
      isStaff: (state) => state.isStaff,
      company: (state) => state.company,
      token: (state) => state.token
    }
Run Code Online (Sandbox Code Playgroud)