为了账号安全,请及时绑定邮箱和手机立即绑定

通过vuex更新异步更新数据,其他页面怎么在异步更新完毕之后获取数据?

通过vuex更新异步更新数据,其他页面怎么在异步更新完毕之后获取数据?

幕布斯7119047 2019-02-26 20:20:13
a.vue中有个http请求,响应之后this.$store.commit('userInfo', userInfo);,在b.vue页面通过computed获取更新之后的数据userInfo(){        return this.$store.state.userInfo       },b.vue页面中通是有个方法需要获取此数据:this.userInfo,当页面刷新的刷新的时候,a.vue页面中的页面请求可能还没有完成,b.vue 页面就要获取 数据了,导致出现undefined问题;请问这个问题应该怎么解决???
查看完整描述

2 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

不用想这么复杂,没有获取到this.userInfo前加个loading状态,比如通过其中一个存在参数判断

computed: {
    isLoading(){        return this.userInfo.token ? true : false;
    }
},
watch: {
    isLoading: {
        handler: function(val){            if(val){// 已获取
                console.log("start...")
            }
        },
        immediate: true
    }
}

等获取到再执行你的代码


查看完整回答
反对 回复 2019-02-26
?
长风秋雁

TA贡献1757条经验 获得超7个赞

1:等接口返回后再作跳转
2:给this.userInfo设置默认值,避免undefined,在组件模板进行判断,如果未返回就不渲染

查看完整回答
反对 回复 2019-02-26
  • 2 回答
  • 0 关注
  • 2589 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信