初始化阶段模板编译阶段安装阶段卸载阶段
所有生命周期挂钩的这种上下文将自动呈现为实例,因此您可以访问数据,计算和方法。这意味着您不应使用箭头函数来定义生命周期方法(例如创建:()=> this.fetchtodos())。由于箭头函数已绑定到父级上下文,因此这不会指向预期的组件实例,并且this.fetchtodos将不确定。
在Update更新之前,Beforemount Mountain创建了Beforedroy被摧毁
激活的停用性
在捕获后代组件中的错误时,请调用错误捕获。此挂钩将接收三个参数:错误对象,发生的组件实例以及包含错误源信息的字符串。此挂钩可以返回false以防止错误继续向上扩展。
错误传播规则
默认情况下,如果定义了全局config.errorhandler,则所有错误仍将发送,因此这些错误仍将报告给单个分析服务位置。
如果在继承链(继承链)或父链中存在多个错误capture钩子,则它们将与相同的错误一一唤醒。
如果错误捕获的挂钩本身具有错误本身,则新错误和原始捕获错误将发送到Global Config.errorhandler。
错误捕获的挂钩可以返回false,以防止错误继续向上扩展。本质上,“此错误已经完成并应忽略。”它会防止任何其他ErrorCaptud Hooks和Global Config.Errorhandler,这将被唤起。
要创建的新VUE()之前的阶段称为某些属性,事件和响应数据的初始化阶段初始化,例如Props/Method/Data/Computered/Computer/Computer/suffice/indect/indect/indect/intext/intect/intect/inject/intect
当编译模板编译阶段以在创建钩函数和BeforeMount Hook函数之间的主要目的的主要目的中,将模板汇编以作为渲染函数编译为渲染函数。只有在完整版中使用完整版本时,当不需要包装代码时,它不需要编译器。
因此,生产环境中没有模板汇编阶段
山钩功能的DoforeMount Dog功能安装在DOM元素的DOM'的这个阶段跟踪依赖的变化
当钻头安装时,VUE将继续跟踪状态。当数据更改时,Watcher将通知虚拟DOM RE -RENDERING/,并将触发前UPDATE挂钩函数。弱点完成后,Updad Hook函数的过程是我们说的回应
VUE将删除自己的父部件的急速,取消实例上的所有依赖跟踪,然后删除所有事件以监视它们。
在安装阶段,父亲beforecreate->父亲创造 - > beforemount-> zi beforecreate-> zi> zi created-> zi beforemount-> zi> zi amented->父亲
在更新阶段,父亲在update-> zi之前 - > zi> zi更新 - >父亲更新了
在破坏阶段,父亲beforedestroy-> Zi beforedestroy-> Zi被摧毁 - >父亲被摧毁
创建'); - >安装
提供 /注入的选项需要一起使用,以允许祖先组件将依赖项注入其后代的所有后代。无论组件级别有多深,在建立上游和下游关系期间,它始终将生效。如果您熟悉React,这与React的上下文特征非常相似。提示:提供和注入绑定不是可用。这是故意的。但是,如果您通过监视对象,则可以响应对象的对象。
开始属性由用户提供,内部属性是以下笔触_;
初始化事件是指我们的V-ON寄存器的事件
将使用每个父亲提供者提供的提供商提供的属性
首先初始化Prop并初始化方法,然后初始化数据数据中的Prop属性。
道具VUE的所有组件都是VUE实例。该组件执行模板将标签上的属性分析到数据中。当执行渲染函数渲染函数时,将生成真实的dom节点。组件将在虚拟DOM渲染过程中实例化。
父亲组件被引入子组件道具中的a-name。需要通过驼峰到阿纳姆进行分析
像事件一样,每个MedHod属性是否合法安装在VM上
最后,它将存储在vm._data中。如果理解和执行函数,将获得返回值,否则不能在没有重复名称的情况下注册的空心对象属性的返回。
VM是ViewModel的缩写。这是一个视图模型实例。在上下文中,这只是计算。VM上简单的GETTER方法计算的结果将被缓存。当返回值更改时,返回值将被重新计算
如何指定计算属性的返回值是否与观察者的Dirry属性结合出现:当脏属性是脏属性时,当true时触发了re -calcatulation。当true时,forsecruation是一个不变的属性/不需要的属性/不需要重新计算。当计算属性中的内容更改时,计算属性的观察器和组件将获得通知计算属性的wacher,将把自己的脏脏设置为true。当读取计算属性时,将重新计算值。还将通知自我检查观察者以执行渲染函数以重新呈现。由于重新执行渲染函数,因此将再次读取计算属性的所有值。在此timeall,将重新计算该渲染的计算属性计算值
1.模板读取计算属性2.计算属性,运行计算函数并使用warcher观察数据更改3.数据更改,计算属性的观察器设置为true,并同时通知模板,您需要重新雇用它。4.模板将最终重组属性函数,因为(脏)是正确的,在计算后,肮脏变为false
新的更改 - 当更改计算属性的依赖关系时,计算属性的值尚未更改,并且渲染函数仍将再次获取。如果有变化,则没有通知渲染的情况。肮脏再次设置为false
当触发Getter方法时,发生了两件事1.计算当前计算属性的值。目前,您将使用wathcer观察计算属性中使用的所有其他数据中的更改。在同一时间,将计算属性的肮脏属性设置为true 2.当计算属性中使用的数据更改时,将收到通知
实施计算的原理分析1.每个计算属性都会生成相应的观察器实例。观察者具有一个值属性并获得方法。计算机化的GETTER功能将在GET方法中调用,并将分配返回值。初始设置是肮脏和懒惰的。当懒惰是真的,它不会立即执行GET方法。相反,它将在读取计算值时执行;
2.将计算属性添加到组件实例,通过get和设置获得或设置属性值,然后重新定义getter方法;
3.当页面初始化时,它将读取计算属性值以触发重新定义的getter。由于观察者的肮脏值是正确的,因此将调用原始getter函数。(数据劫持中的GET方法)将与计算机相对应的函数添加到数据依赖的收集器(DEP)。执行观察者的GET方法后,查看者的值已更新,脏器设置为false,表明该值已更新,然后执行观察者的依赖方法。在设备(DEP)中,计算的值的值最终返回;
4.当更改计算属性getter函数的数据值时,它将触发前一个DEP收集的观察者,依次调用观察者的更新方法,并调用计算机观察者的更新方法。因为懒惰是正确的,所以肮脏将首先。设置为true,表明compute属性getter函数依赖于要更改的数据,但是它不调用观察者的get方法来更新值。在更新页面时,包含更新页面方法的观察者将读取计算属性值,以触发重新定义的getter函数。因为肮脏是正确的,请调用观察者的获取方法,更新值和返回,然后return.complete页面渲染;
初始化的最后一步是初始化手表,在选项中穿越手表属性,内部呼叫VM。$手表创建的手表
请注意,箭头函数不应用于定义观察器函数(例如,searchQuery:newValue => this.updateautocomplete(newValue))。原因是箭头函数绑定了父级范围的上下文,因此不会按预期指出VUE实例。updateautococtere将不确定。
如果执行时间函数,则返回值,存储,否则将直接存储到值
将恢复子组件,然后执行当前实例的安装
数据更改后,在更新之前调用DOM。它适合在要更新现有DOM之前访问它,例如删除手动添加事件监视器。
在服务器侧渲染期间未调用钩子,因为仅在服务器端执行第一个渲染。
它是在数据更改引起的虚拟DOM重新施用和更新之后调用的。
调用此挂钩后,已更新组件DOM,因此您现在可以执行取决于DOM的操作。但是,在大多数情况下,您应该避免在此期间更改状态。如果您想更改相应的状态,通常最好使用计算属性或观看。
请注意,更新并不能保证所有子类都被重新渲染。如果要等到整个视图呈现,则可以使用VM。$ NextTick在更新中:
只有当组件被包裹在静脉内时,这两个生命周期功能才会被调用。如果将其用作普通组件,则不会被调用,并且在使用排除将其排除后,即使将其包裹在包装中,即使它被包裹在包装中,也将其排除在外。活着,这两个挂钩函数仍然不会被调用!此外,在服务器渲染过程中将不会调用此挂钩函数。
在第一个-to -Child组件被破坏后,当前实例组件被破坏
当消耗组件时,$销毁方法将被调用
原始:https://juejin.cn/post/709980166666639101959