vue组件中各方法执行顺序

今天遇到一个bug,在mounted中调用的方法需要用到一个data中的数据。

在created中axios访问后台数据并赋值给data中变量,但data并没有拿到

在不同位置进行控制台打印,发现执行顺序不完全是按照上下顺序执行的。

原因是axios发送异步请求,每个请求接收到反馈的时间总不相同。

解决方法是将要控制顺序在axios后的语句写在axios.then中,就能确保数据返回之后执行。

再记录一下各个方法执行的顺序

在页面首次加载执行顺序有如下:

beforeCreate //在实例初始化之后、创建之前执行
created //实例创建后执行
beforeMounted //在挂载开始之前调用
filters //挂载前加载过滤器
computed //计算属性
directives-bind //只调用一次,在指令第一次绑定到元素时调用
directives-inserted //被绑定元素插入父节点时调用
activated //keek-alive组件被激活时调用,则在keep-alive包裹的嵌套的子组件中触发
mounted //挂载完成后调用

{{}} //mustache表达式渲染页面

修改页面input时,被自动调用的选项顺序如下:

watch //首先先监听到了改变事件
filters //过滤器没有添加在该input元素上,但是也被调用了
beforeUpdate //数据更新时调用,发生在虚拟dom打补丁前
directived-update //指令所在的组件的vNode更新时调用,但可能发生在其子vNode更新前
directives-componentUpdated//指令所在的组件的vNode及其子组件的vNode全部更新后调用
updated //组件dom已经更新

组件销毁时,执行顺序如下

beforeDestroy //实例销毁之前调用
directives-unbind //指令与元素解绑时调用,只调用一次
deactivated //keep-alive组件停用时调用
destroyed //实例销毁之后调用
posted @ 2021-11-16 18:22  SultanST  阅读(607)  评论(0编辑  收藏  举报