千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  应聘面试  >  html5面试题  > vue实例中的data,在生命周期哪里能找到

vue实例中的data,在生命周期哪里能找到

来源:千锋教育
发布人:qyf
时间: 2022-11-16 17:01:50 1668589310

vue实例

  如果想要了解哪个生命周期中可以找到vue实例的data,那我们必须了解,vue实例初始化的基本流程。

  一、vue实例的初始化过程

  1. new Vue从new Vue(options) 开始作为入口,Vue只是一个简单的构造函数,内部是这样的: function Vue (options) { this._init(options) } 进入了 _init 函数之后,先初始化了一些属性。

  (1. initLifecycle:初始化一些属性如$parent,$children。根实例没有 $parent,$children开始是空数组,直到它的子组件实例进入到initLifecycle时,才会往父组件的 $children里把自身放进去。所以$children里的一定是组件的实例。initEvents:初始化事件相关的属性,如 _events 等。

  (2. initRender:初始化渲染相关如 $createElement,并且定义了$attrs和$listeners为浅层响应式属性。

  具体可以查看细节章节。并且还定义了$slots、$scopedSlots,其中$slots是立刻赋值的,但是$scopedSlots初始化的时候是一个emptyObject,直到组件的vm._render过程中才会通过normalizeScopedSlots去把真正的$scopedSlots整合后挂到vm上。然后开始第一个生命周期: callHook(vm, 'beforeCreate')

  2. beforeCreate被调用完成 beforeCreate 之后

  (1. 初始化inject

  (2. 初始化state - 初始化props - 初始化methods - 初始化data - 初始化computed - 初始化watch

  (3. 初始化provide 所以在data中可以使用 props 上的值,反过来则不行。然后进入 created 阶段: callHook(vm, 'created')

  3. created被调用完成 调用 $mount 方法,开始挂载组件到dom上。如果使用了 runtime-with-compile版本,则会把你传入的template选项,或者html文本,通过一系列的编译生成 render 函数。

  - 编译这个 template,生成 ast 抽象语法树。

  - 优化这个 ast,标记静态节点。(渲染过程中不会变的那些节点,优化性能)。

  - 根据 ast,生成 render 函数。 对应具体的代码就是: const ast = parse(template.trim(), options) if (options.optimize !== false) { optimize(ast, options) } const code = generate(ast, options) 如果是脚手架搭建的项目的话,这一步 vue-cli 已经帮你做好了,所以就直接进入 mountComponent 函数。

  那么,确保有了render函数后,我们就可以往 渲染的步骤继续进行了

  二、结论:通过上面的vue实例化的前面几步我们可以知道,在created生命周期中,我们就可以对data做操作,因为此时根实例相关的属性都已准备完毕。

  那在created后面执行的生命周期,自然也都可以获取并操作data,所以能够操作data的常用生命周期就有如下几个:

  - created - beforeMount - mounted - beforeUpdate - updated

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT