日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Vue初始化中的選項合并之initInternalComponent詳解

瀏覽:196日期:2023-01-13 17:08:06

今天給大家分享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 = parentVnode.componentOptions opts.propsData = vnodeComponentOptions.propsData 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 new vnode.componentOptions.Ctor(options)}

option中有三個屬性值,_isComponent上面已經提到過了;_parentVode其實就是該組件實例的vnode對象(createComponentInstanceForVnode就是根據這個vnode對象去創(chuàng)建一個組件實例);parent則是該組件的父組件實例對象。然后我們來看看具體initInternalComponent做了什么操作:

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

首先,用Object.create這個函數,把組件構造函數的options掛載到vm.$options的__proto__上。

const parentVnode = options._parentVnodeopts.parent = options.parentopts._parentVnode = parentVnode

接下把傳入參數的option的_parentVode和parent掛載到組件實例$options上。用我們在兩種策略里的那個例子來說,parent就是我們組件的根實例,而_parentVnode就是<comp :msg='msg' @log-msg='logMsg'></comp>生成的一個Vnode對象。

const vnodeComponentOptions = parentVnode.componentOptionsopts.propsData = vnodeComponentOptions.propsDataopts._parentListeners = vnodeComponentOptions.listenersopts._renderChildren = vnodeComponentOptions.childrenopts._componentTag = vnodeComponentOptions.tag

然后把父組件里的vnode上的四個屬性掛載到我們的$options上,還是用那個例子來說,propsData就是根據:msg='msg'生成的,他的值就是在根組件里定義的那個msg{msg: 'props-message'}。而_parentListeners就是根據@log-msg='logMsg'生成的,他的值是logMsg這個定義在父組件中的方法。

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

最后就是如果傳入的option中如果有render,把render相關的也掛載到$options上。因此,這個initInternalComponent主要做了兩件事情:1.指定組件$options原型,2.把組件依賴于父組件的props、listeners也掛載到options上,方便子組件調用。

總結

到此這篇關于Vue初始化中的選項合并之initInternalComponent詳解的文章就介紹到這了,更多相關Vue初始化選項合并內容請搜索好吧啦網以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产乱码精品一区二区三区四区 | 91精品啪在线观看国产爱臀| 奶水喷射视频一区| 国产美女一区| 免费观看在线综合| 日韩激情精品| 国产精品一区二区免费福利视频| 久久99偷拍| 综合日韩av| 国产一区久久| 亚州欧美在线| 老牛国内精品亚洲成av人片| 成人av三级| 麻豆成人在线| **爰片久久毛片| 精品久久中文| 欧美不卡在线| 青青国产精品| 亚洲性色av| 亚洲色图综合| 里番精品3d一二三区| 久久黄色影院| 日韩和欧美一区二区三区| 精品亚洲a∨| 日韩午夜av| 国产精品久久久久9999高清| 久久久精品网| 日韩成人在线看| 日本免费久久| 日本不卡在线视频| 精精国产xxxx视频在线野外| 亚洲免费一区二区| 麻豆一区二区99久久久久| 久久精品播放| 欧美日一区二区三区在线观看国产免| 精品中文字幕一区二区三区| 午夜国产精品视频免费体验区| 国产日韩欧美三级| 今天的高清视频免费播放成人| 欧美亚洲专区| 日韩视频在线一区二区三区| 国产精品日韩精品中文字幕| 免费av一区二区三区四区| 国产精品久久久久久久久久白浆 | 97久久超碰| 欧美日韩在线二区| 日韩av中文字幕一区| 韩国精品主播一区二区在线观看| 亚洲开心激情| 久久久久久久久久久妇女| 久久激五月天综合精品| 红桃视频国产精品| 五月天av在线| 国产精品欧美在线观看| 模特精品在线| 欧美成人日韩| 精品久久在线| 91精品尤物| 视频一区二区三区入口| 久久精品在线| 精品国产一级| 日韩黄色在线观看| 影院欧美亚洲| 日韩精品dvd| 国产精品99久久免费| 亚洲色图网站| 亚洲欧美日韩在线观看a三区| 欧美日韩视频免费观看| 久久a爱视频| 日本精品一区二区三区在线观看视频| 激情综合网五月| 免费一二一二在线视频| 精品亚洲成人| 欧美激情三区| 国产亚洲高清在线观看| 久久亚洲二区| 在线日韩欧美| 日韩国产欧美一区二区| 精品视频在线你懂得| 国产欧美综合一区二区三区| 综合一区av| 一区二区三区四区日韩| 国产精品日韩久久久| 女同性一区二区三区人了人一| 欧美不卡高清一区二区三区| 伊人久久视频| 日本美女一区| 999久久久国产精品| 久久久久国产精品一区三寸| 91精品韩国| 欧美日韩水蜜桃| 国内激情久久| 不卡在线一区二区| 婷婷激情图片久久| 亚洲大全视频| 欧美日韩日本国产亚洲在线| 日韩午夜电影| 只有精品亚洲| 日本久久一区| 国产精品黄网站| 里番精品3d一二三区| 91综合视频| 久久精品官网| 香蕉久久国产| 蜜臀va亚洲va欧美va天堂| 视频一区中文字幕精品| 日韩午夜视频在线| 日本成人一区二区| 久久精品三级| 久久精品导航| 国产亚洲永久域名| 亚洲欧洲国产精品一区| 日韩av三区| 精品国产美女a久久9999| 蜜桃av在线播放| 久久亚洲一区| 国产精品中文字幕制服诱惑| 91麻豆国产自产在线观看亚洲| 精品国模一区二区三区| 亚洲一区欧美二区| 国产色99精品9i| 国产精品久久久久久久久妇女| 国产粉嫩在线观看| 99pao成人国产永久免费视频| 婷婷精品在线观看| 久久精品人人| 国产高清一区| 日韩av电影一区| 精品久久久久中文字幕小说| 欧美高清不卡| 欧美影院精品| 高清不卡亚洲| 中文字幕亚洲在线观看| 久久精品一区二区国产| 国产尤物精品| 日本欧美在线| 久久精品欧美一区| 亚洲丝袜美腿一区| 国产伊人久久| 视频在线观看91| 牛牛精品成人免费视频| 亚洲性色视频| 国产精品亚洲人成在99www| 日韩在线短视频| 日韩午夜视频在线| 亚洲播播91| 日本成人精品| 欧美aa国产视频| 久久精品国产成人一区二区三区| 欧美专区18| 日本美女一区| 国产精品宾馆| 亚洲激情二区| 国产一区二区三区探花| 久热精品在线| 久久国产毛片| 精品国产亚洲一区二区三区| 蜜臀国产一区二区三区在线播放| 超碰超碰人人人人精品| 欧美欧美黄在线二区| 一区免费在线| 三上亚洲一区二区| 日精品一区二区三区| 欧美丝袜一区| 丰满少妇一区| 欧美日韩一区二区高清| 亚洲激情精品| 日韩美女一区二区三区在线观看| 日韩毛片一区| 久久国产福利| 久久精品卡一| 日韩不卡一区| 国产精品毛片久久久| 老司机久久99久久精品播放免费| 91综合网人人| 免费亚洲一区| 日韩激情精品| 在线免费观看亚洲| 欧美日韩国产在线观看网站| 成人片免费看| аⅴ资源天堂资源库在线| 国产精品hd| 日韩**一区毛片| 亚洲精品系列| 免费视频最近日韩| 男女精品网站| 亚洲专区在线| 欧美在线综合| 六月婷婷一区| 免费久久精品视频| 国产精品日本| 中国女人久久久| 欧美91视频| 亚洲性色视频| 亚洲免费精品| 爽好久久久欧美精品| 麻豆亚洲精品| 在线亚洲成人| 欧美日韩精品一本二本三本| 好看不卡的中文字幕|