应用API进行用户身份验证,将登陆状态保存为Vuex状态中的布尔值。当用户登陆时,设置了 登陆状态 并相应地有条件地显示 登陆/注销 按钮。
可是当刷新页面时,vue应用程序的状态将丢失并重置为默认值。
这致使的问题就是:即便用户登陆了,但刷新页面时,登陆状态 也会设置为false, 这样即便用户保持登陆状态,也会显示登陆按钮而不是注销按钮....
怎么作才能防止这种行为vue
可使用 vuex-persistedstate 。这是一个用于 vuex
在页面刷新之间处理和存储状态的插件。git
示例代码:github
import createPersistedState from 'vuex-persistedstate' const store = new Vuex.Store({ // ... plugins: [ createPersistedState() ] })
以上是将状态保存在 localStorage ,也可使用 js-cookie
将状态保存在cookievuex
import { Store } from 'vuex' import createPersistedState from 'vuex-persistedstate' import * as Cookies from 'js-cookie' const store = new Store({ // ... plugins: [ createPersistedState({ storage: { getItem: key => Cookies.get(key), // 参考 https://github.com/js-cookie/js-cookie#json setItem: (key, value) => Cookies.set(key, value, { expires: 3, secure: true }), removeItem: key => Cookies.remove(key) } }) ] })
总结:npm
js-cookie
getItem
加载保存的状态setItem
保存状态removeItem
删除保存的状态vuex-persistedstate
文档和安装说明:https://www.npmjs.com/package/vuex-persistedstatejson