javascript - Vuex 状态在加载 vue 组件之前没有更新?
问题描述
有时令牌会提交到 Vuex 存储,有时不会。
userLogin() {
axios.post('api/login', this.logindata,)
.then(response => {
let token = JSON.parse(localStorage.getItem('token'));
this.$store.commit('setToken', token);
this.logindata = {};
this.loaded = true;
this.success = true;
this.$router.push({path: '/'});
});
}
这是store.js
:
export default new Vuex.Store({
state: {
token: JSON.parse(localStorage.getItem('token')),
isLoggedIn: !!localStorage.getItem('token'),
cart: []
},
mutations: {
setToken(state, token) {
state.token = token;
},
}
});
这是Vue前端:
mounted: function () {
if (!this.$store.state.isLoggedIn) {
this.$router.push('/login')
}
}
结果:有时它会重定向到登录,有时则不会。有什么帮助吗?
解决方案
我会v-if
在您只想在登录后加载的组件上创建一个,您将在其中computed
绑定一个属性,这样您就有了一个监听器。
<myComponent v-if="computedProperty"/>
computed: {
computedProperty(){
return this.$store.state.isLoggedIn
...
推荐阅读
- excel - Excel 表单 ctrl 循环
- python - 如何在 dockerfiles/django-uwsgi-nginx 中运行我的 django 项目?
- python - Python从大型文本文件中提取json字符串
- c++ - c ++在可选类输入中填充向量
- function - 多语句函数 SQL Server 中参数的使用
- javascript - 如何在使用ajax更新mongoDB中的现有数据时允许重复数据?
- windows - Windows 更新错误 0x80244022
- android - 错误:无法加载类 'org.gradle.logging.StyledTextOutput$Style'
- php - 在php中的页面加载时自动获取用户区域
- php - 将项目和子项目插入订单