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

关于vue中computed和mounted的执行问题

关于vue中computed和mounted的执行问题

肥皂起泡泡 2019-03-12 17:14:23
在vue组件中的computed中获取了vuex中的属性,然后在created生命钩子中使用state中的属性发送了请求发现mounted发送请求时参数没有获取到,页面更新之后才正确:computed: {      ...(mapState({        user_name: state => state.user_name,        user_id: state => state.user_id,        user_source: state => state.user_source,      }))    }    created() {      request(extend(true, {}, apis.getUserConsultInfo, {        params: {          consult_id: this.consult_id,          user_id: this.user_id,          user_source: this.user_source        }      })).then((res) => {        console.log(res);      }, (errmsg) => {        this.$message.error(errmsg);      });    }这种情况怎么破?求大神解决~~
查看完整描述

1 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

凡是需要处理vuex的getter中的数据,均在beforeUpdate或者update阶段进行。


8百年前做的一个实验:笑纳。


11个生命周期打印计算属性值(前6个有输出,后5个无输出)

各生命周期打印从vuex的getter获取到的计算属性结果。

mounted阶段的打印尝试,其余的也类似:


    mounted(){

        console.log("mounted↓")

        console.log(this.users)

    }

从vuex getter获取到的数据:


    computed:mapGetters({

        users:'allUsers'

    }),

打印结果:

https://img1.sycdn.imooc.com//5c98881000016c2006980347.jpg

经过观察发现,vue组件生命周期的11个阶段,只有前6个阶段有输出结果。
beforeDestroy,destroyed,activated,deactivated,errorCaptured都没有输出结果。
在前6个阶段的初始输出结果均不是有效数据,beforeCreate的undefined和其他阶段的observer,均是无效数据。
直到16:28:33.740,才开始获得有效数据,且只在before和updated阶段获取到数据。

我们根据实验结果得出一个结论:凡是需要处理vuex的getter中的数据,均在beforeUpdate或者update阶段进行。


查看完整回答
反对 回复 2019-03-25
  • 1 回答
  • 0 关注
  • 5910 浏览
慕课专栏
更多

添加回答

举报

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