我的应用程序使用Firebase API进行用户身份验证,将登录状态保存为Vuex状态下的布尔值。
当用户登录时,我设置登录状态并相应地有条件地显示登录/注销按钮。
但是当页面刷新时,vue应用的状态丢失并重置为默认
这会导致一个问题,即使用户登录并刷新页面,登录状态也会被设置为false,并且显示登录按钮而不是注销按钮,即使用户保持登录状态...
我该怎么做才能防止这种行为
我应该使用cookies还是其他更好的解决方案。。。
Vuex状态保持在存储器中。页面加载将清除此当前状态。这就是状态不坚持重新加载的原因。
但是vuex persistedstate
插件解决了这个问题
npm install --save vuex-persistedstate
现在将其导入商店。
import Vue from 'vue'
import Vuex from 'vuex'
import account from './modules/account'
import createPersistedState from "vuex-persistedstate";
Vue.use(Vuex);
const store = new Vuex.Store({
modules: {
account,
},
plugins: [createPersistedState()]
});
它只需一行代码即可完美运行:插件:[createPersistedState()]
创建VueX状态时,请使用VueX persistedstate插件将其保存到会话存储。这样,当浏览器关闭时,信息将丢失。避免使用cookie,因为这些值将在客户端和服务器之间传递。
import Vue from 'vue'
import Vuex from 'vuex'
import createPersistedState from 'vuex-persistedstate'
Vue.use(Vuex);
export default new Vuex.Store({
plugins: [createPersistedState({
storage: window.sessionStorage,
})],
state: {
//....
}
});
使用会话存储。清除() 当用户手动注销时。
这是一个已知的用例。有不同的解决方案。
例如,可以使用vuex persistedstate
。这是一个用于vuex
的插件,用于处理和存储页面刷新之间的状态。
示例代码:
import { Store } from 'vuex'
import createPersistedState from 'vuex-persistedstate'
import * as Cookies from 'js-cookie'
const store = new Store({
// ...
plugins: [
createPersistedState({
getState: (key) => Cookies.getJSON(key),
setState: (key, state) => Cookies.set(key, state, { expires: 3, secure: true })
})
]
})
我们在这里做的很简单:
js-cookie
getState
上,我们尝试从Cookies
setState
我们保存我们的状态到Cookies
文档和安装说明:https://www.npmjs.com/package/vuex-persistedstate
本文向大家介绍vuex页面刷新后数据丢失的方法,包括了vuex页面刷新后数据丢失的方法的使用技巧和注意事项,需要的朋友参考一下 1. 原因 (1)js代码是运行在内存中的,代码运行时的所有变量、函数都是保存在内存中。 (2)刷新页面,以前申请的内存被释放,重新加载脚本代码,变量要重新赋值。 (3)要想刷新后数据不丢失就必须把数据存储在外部,例如:Local Storage、Session Stor
本文向大家介绍vuex管理状态 刷新页面保持不被清空的解决方案,包括了vuex管理状态 刷新页面保持不被清空的解决方案的使用技巧和注意事项,需要的朋友参考一下 mutation文件 用到publicTit属性的组件 在created()生命周期中进行取值操作,这时需要判断第一次加载项目的时,localStorage没有publicTit的信息,所以先判断一下 实现思路 让vuex中publicTi
似乎$state.go('statename')就像浏览器中的后退按钮一样工作。缓存类型。 当状态发生变化时,我需要刷新页面,例如单击浏览器中的刷新按钮。 当状态改变时,我需要重新加载/刷新整个页面,基本上是重新初始化控制器。 已尝试使用$state。go('statename',{},{重新加载:true}),但没有效果。 我们将不胜感激
如何保持我的商店,如果我刷新一个网页? 我使用历史模式,但如果我重新加载我的网页,我的商店是空的。有解决办法吗?
问题内容: 我有一个文件,其中我在页面顶部显示外部页面(使用iframe),其他部分是写在文件中的html代码的输出。 HTML代码如下所示: 现在,我想以编程方式刷新页面而不刷新。 我的问题是我可以不刷新页面就刷新页面吗? 答案/提示将不胜感激。 问题答案: 该嵌在主HMTL页面(或在JSP)。因此,如果刷新页面,则肯定会再次加载iframe。 为了避免这种情况,我可以考虑以下两种选择: 使用A
本文向大家介绍页面刷新后vuex的state数据丢失怎么解决?相关面试题,主要包含被问及页面刷新后vuex的state数据丢失怎么解决?时的应答技巧和注意事项,需要的朋友参考一下 监听浏览器刷新前的事件,在浏览器刷新之前就把vuex里的数据保存至sessionStorage中,刷新成功后如果异步请求的数据还没返回则直接获取sessionStorage里的数据,否则获取vuex里的数据。