全国咨询热线:18720358503

微信问卷小程序_Vue初始化中的选项合并之initIn

类别:行业新闻 发布时间:2021-01-05 浏览人次:

Vue初始化中的选项合并之initInternalComponent详解       这篇文章主要介绍了Vue初始化中的选项合并之initInternalComponent的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

今天给大家分享Vue初始化中的选项合并之initInternalComponent的相关知识,具体代码如下所示:

export function initInternalComponent (vm: Component, options: InternalComponentOptions) {
 const opts = vm.$options = Object.create(vm.constructor.options)
 // doing this because it's faster than dynamic enumeration.
 const parentVnode = options._parentVnode
 opts.parent = options.parent
 opts._parentVnode = parentVnode
 const vnodeComponentOptions = ponentOptions
 opts.pro凡科抠图Data = vnodeComponentOptions.pro凡科抠图Data
 opts._parentListeners = vnodeComponentOptions.listeners
 opts._renderChildren = vnodeComponentOptions.children
 opts._componentTag = vnodeComponentOptions.tag
 if (options.render) {
 opts.render = options.render
 opts.staticRenderFns = options.staticRenderFns
}

initInternalComponent方法接受两个参数,第一个参数是组件实例,即this。第二个参数是组件构造函数中传入的option,这个option根据上文的分析,他是在createComponentInstanceForVnode方法中定义的:

export function createComponentInstanceForVnode (
 vnode: any, // we know it's MountedComponentVNode but flow doesn't
 parent: any, // activeInstance in lifecycle state
): Component {
 const options: InternalComponentOptions = {
 _isComponent: true,
 _parentVnode: vnode,
 parent
 // check inline-template render functions
 const inlineTemplate = vnode.data.inlineTemplate
 if (isDef(inlineTemplate)) {
 options.render = inlineTemplate.render
 options.staticRenderFns = inlineTemplate.staticRenderFns
 return ponentOptions.Ctor(options)
}

option中有三个属性值,_isComponent上面已经提到过了;_parentVode其实就是该组件实例的vnode对象(createComponentInstanceForVnode就是根据这个vnode对象去创建一个组件实例);parent则是该组件的父组件实例对象。
然后我们来看看具体initInternalComponent做了什么操作:

const opts = vm.$options = Object.create(vm.constructor.options)

首先,用Object.create这个函数,把组件构造函数的options挂载到vm.$options的__proto__上。

const parentVnode = options._parentVnode
opts.parent = options.parent
opts._parentVnode = parentVnode

接下把传入参数的option的_parentVode和parent挂载到组件实例$options上。用我们在两种策略里的那个例子来说,p :msg="msg" @log-msg="logMsg" /comp 生成的一个Vnode对象。

const vnodeComponentOptions = ponentOptions
opts.pro凡科抠图Data = vnodeComponentOptions.pro凡科抠图Data
opts._parentListeners = vnodeComponentOptions.listeners
opts._renderChildren = vnodeComponentOptions.children
opts._componentTag = vnodeComponentOptions.tag

然后把父组件里的vnode上的四个属性挂载到我们的$options上,还是用那个例子来说,pro凡科抠图Data就是根据:msg="msg"生成的,他的值就是在根组件里定义的那个msg{msg: "pro凡科抠图-message"}。="logMsg"生成的,他的值是logMsg这个定义在父组件中的方法。

if (options.render) {
 opts.render = options.render
 opts.staticRenderFns = options.staticRenderFns
}

最后就是如果传入的option中如果有render,把render相关的也挂载到$options上。
因此,这个initInternalComponent主要做了两件事情:1.指定组件$options原型,2.把组件依赖于父组件的pro凡科抠图、listeners也挂载到options上,方便子组件调用。

总结

到此这篇关于Vue初始化中的选项合并之initInternalComponent详解的文章就介绍到这了,更多相关Vue初始化选项合并内容请搜索凡科以前的文章或继续浏览下面的

推荐阅读

微信问卷小程序_Vue初始化中的选项合并之initIn

Vue原始化中的选择项合拼之initInternalComponent详细说明 本文关键详细介绍了Vue原始化中的选择项合拼之initInternalComponent的有关专业知识,文中根据案例编码给大伙儿详细介绍的十分...

2021-01-05
企业网站建设现状如何-凡科抠图 CS4教程视频下载

以全新的Photoshop CS4为实际操作服务平台,共有11课,每课都紧紧围绕着专业知识点开展深层次解读,同时遮盖了Photoshop CS4的绝大多数基本专业知识,如相片的校准、装饰和修补,选区的...

2021-01-05
如何审核大量网站数据?

不管是大集网、五八同城等归类信息内容网站,還是慧聪网、1688等大中型B2B电子器件商务接待网站,每日升级的数据信息全是大量的。大集网淘宝网有关岗位招骋网页页面,北京市地域...

2021-01-05
网站建设中的常见问题(二)

之前大家详细介绍了一些有关企业网站建设的普遍难题,比如网站域名和公司电子邮箱的界定及功效等,这篇大家将再次为大伙儿详细介绍有关企业网站建设中的普遍难题,期待大伙儿...

2021-01-05
重庆营销型网站建设-集团型企业网站建设

隔行如隔山,您资询的再好,都不如我掌握的一半多;有义务心的企业网站建设企业会保证“顾客想起的大家要保证,顾客沒有想起的大家还要帮顾客保证。团体型企业网站建设合适大...

2021-01-05
广州凡科互联网科技股份有限公司招聘美工

招聘人数:24职位信息1.负责公司电商平台商品主图、详情页的制作,能独立完成主图优化,力练卖点2.负责对静物平铺图的修图、对色3.负责商品摄影创意,主要是针对内衣品类“静物创...

2021-01-05
X

400-8700-61718720358503
企业邮箱2639601583@qq.com
官方微信