使用 vue-router 重新加载组件

Posted

技术标签:

【中文标题】使用 vue-router 重新加载组件【英文标题】:Reload component with vue-router 【发布时间】:2019-04-27 08:21:59 【问题描述】:

我有一个使用 Vuejs 和 Vue-Router 的项目。当用户支付(登录)系统时,服务器返回一个包含令牌、用户名和名字的文件 Json,该文件存储在 localstorage 中以供后续请求使用。第一个名称用于布局中,用于在导航栏中显示欢迎消息。注销后,localstorage 被清除,问题就出在这里,当其他用户在欢迎消息中付款时,不使用新的名字重新加载。

<v-chip>bienvenida</v-chip>

computed: 
  bienvenida() 
    const user = JSON.parse(localStorage.getItem("user"));
    return user ? `Bienvenido $user.firstName` : "";
  

【问题讨论】:

VueJS - how to watch a value in localStorage?的可能重复 我会使用 Vuex 和 vuex-persist。您反应性地绑定到 vuex getter 并让 vuex-persist 处理将状态存储在 localstorage 中。 【参考方案1】:

LocalStorage 不是反应式的,因此计算属性不会对 localStorage 的更改做出反应。有various ways 可以规避这一点,但最简单的方法是查看内部属性并将值也保存到 localStorage。

一种正确的方法是使用Vuex(Vue 的官方状态管理)将您的数据存储到 Vuex 存储中。然后有a Vuex plugin 将所有存储或部分存储在本地或会话存储中。 Vuex store 是响应式的,所以你可以在你的计算属性中观察 store 的变化。

【讨论】:

以上是关于使用 vue-router 重新加载组件的主要内容,如果未能解决你的问题,请参考以下文章

vue学习 ---- 使用vue-router 进行跳转

vue-router和webpack懒加载,页面性能优化篇

Vue-Router 数据获取:在“beforeRouteUpdate”加载组件之前获取数据

延迟加载的 vue-router 组件不适用于 s-s-r

vue 组件按需引用,vue-router懒加载,vue打包优化,加载动画

Vue总结第五天:vue-router (使用模块化(创建Vue组件)机制编程)router-link 标签的属性路由代码跳转懒加载路由嵌套(子路由)路由传递数据导航守卫)