We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
生命周期(Life Cycle)的概念应用很广泛,特别是在政治、经济、环境、技术、社会等诸多领域经常出现,其基本涵义可以通俗地理解为“从摇篮到坟墓”(Cradle-to-Grave)的整个过程在Vue中实例从创建到销毁的过程就是生命周期,即指从创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、卸载等一系列过程我们可以把组件比喻成工厂里面的一条流水线,每个工人(生命周期)站在各自的岗位,当任务流转到工人身边的时候,工人就开始工作PS:在Vue生命周期钩子会自动绑定 this 上下文到实例中,因此你可以访问数据,对 property 和方法进行运算这意味着你不能使用箭头函数来定义一个生命周期方法 (例如 created: () => this.fetchTodos())
(Life Cycle)
(Cradle-to-Grave)
Vue
this
property
created: () => this.fetchTodos()
Vue生命周期总共可以分为8个阶段:创建前后, 载入前后,更新前后,销毁前销毁后,以及一些特殊场景的生命周期
Vue生命周期流程图
beforeCreate -> created
vue
created
watch
event
methods
dom
computed
vm.$el
created -> beforeMount
el
vm.$mount(el)
render
template
outerHTML
vm.el
DOM
beforeMount
beforeMount -> mounted
mounted
beforeUpdate
view
updated
beforeDestroy
destroyed
使用场景分析
created是在组件实例一旦创建完成的时候立刻调用,这时候页面dom节点并未生成;mounted是在页面dom节点渲染完毕之后就立刻执行的。触发时机上created是比mounted要更早的,两者的相同点:都能拿到实例对象的属性和方法。 讨论这个问题本质就是触发的时机,放在mounted中的请求有可能导致页面闪动(因为此时页面dom结构已经生成),但如果在页面加载前完成请求,则不会出现此情况。建议对页面内容的改动放在created生命周期当中。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
面试官:请描述下你对vue生命周期的理解?在created和mounted这两个生命周期中请求数据有什么区别呢?
一、生命周期是什么
生命周期
(Life Cycle)
的概念应用很广泛,特别是在政治、经济、环境、技术、社会等诸多领域经常出现,其基本涵义可以通俗地理解为“从摇篮到坟墓”(Cradle-to-Grave)
的整个过程在Vue
中实例从创建到销毁的过程就是生命周期,即指从创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、卸载等一系列过程我们可以把组件比喻成工厂里面的一条流水线,每个工人(生命周期)站在各自的岗位,当任务流转到工人身边的时候,工人就开始工作PS:在Vue
生命周期钩子会自动绑定this
上下文到实例中,因此你可以访问数据,对property
和方法进行运算这意味着你不能使用箭头函数来定义一个生命周期方法 (例如created: () => this.fetchTodos()
)二、生命周期有哪些
Vue生命周期总共可以分为8个阶段:创建前后, 载入前后,更新前后,销毁前销毁后,以及一些特殊场景的生命周期
三、生命周期整体流程
Vue
生命周期流程图具体分析
beforeCreate -> created
vue
实例,进行数据观测created
watch
、event
事件回调的配置methods
中的方法,访问和修改data数据触发响应式渲染dom
,可通过computed
和watch
完成数据计算vm.$el
并没有被创建created -> beforeMount
el
选项,若不存在则停止编译,直到调用vm.$mount(el)
才会继续编译render
>template
>outerHTML
vm.el
获取到的是挂载DOM
的beforeMount
vm.el
vm.el
虽已完成DOM初始化,但并未挂载在el
选项上beforeMount -> mounted
vm.el
完成挂载,vm.$el
生成的DOM
替换了el
选项所对应的DOM
mounted
vm.el
已完成DOM
的挂载与渲染,此刻打印vm.$el
,发现之前的挂载点及内容已被替换成新的DOMbeforeUpdate
el
、template
、render
之一)view
层还未更新beforeUpdate
中再次修改数据,不会再次触发更新方法updated
view
层的更新updated
中再次修改数据,会再次触发更新方法(beforeUpdate
、updated
)beforeDestroy
destroyed
使用场景分析
四、数据请求在created和mouted的区别
created
是在组件实例一旦创建完成的时候立刻调用,这时候页面dom
节点并未生成;mounted
是在页面dom
节点渲染完毕之后就立刻执行的。触发时机上created
是比mounted
要更早的,两者的相同点:都能拿到实例对象的属性和方法。讨论这个问题本质就是触发的时机,放在
mounted
中的请求有可能导致页面闪动(因为此时页面dom
结构已经生成),但如果在页面加载前完成请求,则不会出现此情况。建议对页面内容的改动放在created
生命周期当中。参考文献
The text was updated successfully, but these errors were encountered: