加载vue组件之前,vuex状态是否未更新?

时间:2019-08-05 10:22:15

标签: javascript laravel vue.js vuejs2 vuex

有时令牌提交到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')
  }
}

结果:有时重定向到登录,有时不重定向。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

只有登录后,我才会在要加载的组件上制作一个v-if,这样您就可以绑定一个computed属性,这样您就可以拥有一个侦听器。

<myComponent v-if="computedProperty"/>
computed: {
 computedProperty(){
   return this.$store.state.isLoggedIn
...