硬重载后,vuex状态未加载到nuxtjs mount()中

时间:2019-11-02 03:33:41

标签: javascript vue.js vuex nuxt.js persistent-storage

我一直在nuxtjs中构建我的第一个应用程序,但是vue状态存在一些问题。 我已经集成了vuex-persistedstatejs-cookie来保持状态。

我正在尝试获取vuex状态并在组件内部状态(data () {})中设置值。

Notification.vue

computed: {
   ...mapState({
     user: state => state.auth.user
   })
 },
mounted() {
  this.notifications = this.user.notification
}

如果我从另一页面进入此页面,则此方法很好。

但是,如果我直接重新加载通知页面,则this.user(vuex状态)为null。 如果我将其包装在setTimeout()中,即使重新加载页面后也可以正确获取状态。

例如:

mounted () {
  setTimeout(() => {
    this.notification = this.user.notification
  })

我相信这是vuex和nuxtjs的异步问题,但我认为将setTimeout包装在所有组件Mounted()方法中不是一个好主意。

有什么办法解决这个问题?

非常感谢。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。我使用this.$nextTick()而不是setTimeout()进行了修复。我认为这样比较干净。