最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue父子組件間引用之$parent、$children

 更新時(shí)間:2020年05月20日 10:03:57   作者:云小夢(mèng)  
這篇文章主要介紹了vue父子組件間引用之$parent、$children的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

vue中提到【父子組件】,則一定會(huì)想到我們常用的父子組件通信:props+$on()、$emit() ,如圖:

tp

也就是說(shuō),雖然在一般情況下,子組件是不能引用父組件或者Vue實(shí)例的數(shù)據(jù),但是對(duì)于在開發(fā)中出現(xiàn)的“數(shù)據(jù)需要在組件中來(lái)回傳遞”,我們最簡(jiǎn)單的解決辦法就是通過(guò)props(和v-on)將數(shù)據(jù)從父組件傳到子組件,再用$emit將數(shù)據(jù)從子組件傳到父組件,以此循環(huán)引用。

但是在另一些場(chǎng)景下,我們可能想要比如(在父組件中)拿到子組件對(duì)象,然后直接操作其中數(shù)據(jù),去實(shí)現(xiàn)一些功能,比如方法的調(diào)用。

yy

有時(shí)候我們需要父組件直接訪問(wèn)子組件、子組件直接訪問(wèn)父組件,或者子組件訪問(wèn)根組件:

  • 父組件訪問(wèn)子組件:使用$children$refs reference
  • 子組件訪問(wèn)父組件:使用$parent

父子組件的訪問(wèn)方式之:$children

children很特別,查閱資料可以發(fā)現(xiàn):this.$children是一個(gè)數(shù)組類型,它包含了所有子組件對(duì)象:

<body>
		<div id="app">
			<mxc></mxc>
			<mxc></mxc>
			<mxc></mxc>
			<button @click="btnClick">顫抖吧</button>
		</div>
		<template id="mxc">
			<div>我是子組件啊</div>
		</template>
		
		<script>
			const app=new Vue({
				el:'#app',
				data:{
					message:'你好'
				},
				methods:{
					btnClick(){
						console.log(this.$children)
					}
				},
				components:{
					mxc:{
						template:'#mxc',
						methods:{
							showMessage(){
								console.log('mxcnb')
							}
						}
					}
				}
			})
		</script>
	</body>

點(diǎn)擊(父組件)按鈕之后:

xs

我們還可以通過(guò)循環(huán)拿到所有子組件數(shù)據(jù):

<body>
		<div id="app">
			<mxc></mxc>
			<mxc></mxc>
			<mxc></mxc>
			<button @click="btnClick">顫抖吧</button>
		</div>
		<template id="mxc">
			<div>我是子組件啊</div>
		</template>
		
		<script>
			const app=new Vue({
				el:'#app',
				data:{
					message:'你好'
				},
				methods:{
					btnClick(){
						console.log(this.$children)
						for(let c of this.$children){
							console.log(c.name)
						}
					}
				},
				components:{
					mxc:{
						template:'#mxc',
						data(){
							return{
								name:'我是子組件的name'
							}
						},
						methods:{
							showMessage(){
								console.log('mxcnb')
							}
						}
					}
				}
			})
		</script>
	</body>

點(diǎn)擊(父組件)按鈕之后:

xs

因?yàn)槭菙?shù)組,所以我們可以通過(guò)比如:this.$children[2]來(lái)拿到第三個(gè)子組件的數(shù)據(jù)。
但是這么做有一個(gè)問(wèn)題:比如開發(fā)時(shí)突然在這三個(gè)子組件中又插入了一個(gè)子組件(可能相同,也可能不同),這時(shí)候【2】就不再是我們需要的了。。。

所以我們可以用vue-DOM之光$refs

<body>
		<div id="app">
			<mxc></mxc>
			<mxc></mxc>
			<mxc ref="aaa"></mxc>
			<button @click="btnClick">顫抖吧</button>
		</div>
		<template id="mxc">
			<div>我是子組件啊</div>
		</template>
		
		<script>
			const app=new Vue({
				el:'#app',
				data:{
					message:'你好'
				},
				methods:{
					btnClick(){
						console.log(this.$refs)
						console.log(this.$refs.aaa)
					}
				},
				components:{
					mxc:{
						template:'#mxc',
						data(){
							return{
								name:'我是子組件的name'
							}
						},
						methods:{
							showMessage(){
								console.log('mxcnb')
							}
						}
					}
				}
			})
		</script>
	</body>

點(diǎn)擊(父組件)按鈕之后:

xs

為什么叫“DOM之光”呢?因?yàn)樗驮鶭S中的document.querySelector('xxx')功能一樣,它可以在vue中獲取元素/匹配組件

子訪問(wèn)父:$parent

<body>
		<div id="app">
			<mxc></mxc>
		</div>
		<template id="mxc">
			<div>我是子組件啊</div>
			<button @click="btnClick">更加顫抖的child</button>
		</template>
		
		<script>
			const app=new Vue({
				el:'#app',
				data:{
					message:'你好'
				},
				components:{
					mxc:{
						template:'#mxc',
						methods:{
							btnClick(){
								console.log(this.$parent)
							}
						}
					}
				}
			})
		</script>
	</body>

如法炮制:

xs

圖中el屬性在有些瀏覽器(或添加了vue插件)會(huì)顯示未Vue?
因?yàn)楫?dāng)前子組件的父組件就是vue實(shí)例?。?/p>

(但是在實(shí)際中$parent用的非常少——考慮到耦合度的原因)

子組件訪問(wèn)根組件:$root

<body>
		<div id="app">
			<mxc></mxc>
		</div>
		<template id="mxc">
			<div>
				<div>我是mxc組件</div>
				<cdn></cdn>
			</div>
		</template>
		<template id="mxca">
			<div>
				<div>我是子子組件啊</div>
				<button @click="btnClick">巨顫祖child</button>
			</div>
		</template>
		
		<script>
			const app=new Vue({
				el:'#app',
				data:{
					message:'你好'
				},
				components:{
					mxc:{
						template:'#mxc',
						data(){
							return{
								name:'我是中間子組件的name'
							}
						},
						components:{
							cdn:{
								template:'#mxca',
								methods:{
									btnClick(){
										console.log(this.$parent.name)
										console.log(this.$root.message)
									}
								}
							}
						}
					}
				}
			})
		</script>
	</body>

xs

總結(jié)

到此這篇關(guān)于vue父子組件間引用:$parent、$children的文章就介紹到這了,更多相關(guān)vue父子組件間引用:$parent、$children內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解keep-alive組件緩存

    詳解keep-alive組件緩存

    keep-alive是Vue中一個(gè)非常有用的特性,它可以幫助我們避免重復(fù)渲染和減少組件的渲染次數(shù),從而提高應(yīng)用程序的性能,本文給大家介紹keep-alive組件緩存的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2024-01-01
  • vue父子組件傳值以及單向數(shù)據(jù)流問(wèn)題詳解

    vue父子組件傳值以及單向數(shù)據(jù)流問(wèn)題詳解

    大家應(yīng)該都知道父組件可以向子組件通過(guò)屬性形式傳遞參數(shù),傳遞的參數(shù)也可以隨時(shí)隨意修改;但子組件不能修改父組件傳遞過(guò)來(lái)的參數(shù),所以下面這篇文章主要給大家介紹了關(guān)于vue父子組件傳值以及單向數(shù)據(jù)流問(wèn)題的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • vue3使用vuedraggable和grid實(shí)現(xiàn)自定義拖拽布局方式

    vue3使用vuedraggable和grid實(shí)現(xiàn)自定義拖拽布局方式

    這篇文章主要介紹了vue3使用vuedraggable和grid實(shí)現(xiàn)自定義拖拽布局方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Vue-Router進(jìn)階之滾動(dòng)行為詳解

    Vue-Router進(jìn)階之滾動(dòng)行為詳解

    本篇文章主要介紹了Vue-Router進(jìn)階之滾動(dòng)行為詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • vue-cli webpack 開發(fā)環(huán)境跨域詳解

    vue-cli webpack 開發(fā)環(huán)境跨域詳解

    本篇文章主要介紹了vue-cli webpack 開發(fā)環(huán)境跨域詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Vue深入理解插槽slot的使用

    Vue深入理解插槽slot的使用

    最近被問(wèn)起是否了解vue的插槽(slot),咋一想發(fā)現(xiàn),似乎很少用到這玩意。所以整理了下slot的一些用法
    2022-08-08
  • 深入理解vue.js雙向綁定的實(shí)現(xiàn)原理

    深入理解vue.js雙向綁定的實(shí)現(xiàn)原理

    vue.js是MVVM結(jié)構(gòu)的,同類的還有AngularJs;至于MVC、MVP、MVVM的比較網(wǎng)上已經(jīng)有很多了,這樣不再重復(fù)。這篇文章將給大家深入的介紹vue.js雙向綁定的實(shí)現(xiàn)原理,有需要的朋友們可以參考借鑒,下面跟著小編一起來(lái)看看吧。
    2016-12-12
  • vue3中使用viewerjs實(shí)現(xiàn)圖片預(yù)覽效果的項(xiàng)目實(shí)踐

    vue3中使用viewerjs實(shí)現(xiàn)圖片預(yù)覽效果的項(xiàng)目實(shí)踐

    viewer.js是一款開源的圖片預(yù)覽插件,功能十分強(qiáng)大,本文主要介紹了vue3中使用viewerjs實(shí)現(xiàn)圖片預(yù)覽效果的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • Vue前端框架搭建過(guò)程

    Vue前端框架搭建過(guò)程

    這篇文章主要介紹了Vue前端框架搭建過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • 基于vue-router的matched實(shí)現(xiàn)面包屑功能

    基于vue-router的matched實(shí)現(xiàn)面包屑功能

    本文主要介紹了基于vue-router的matched實(shí)現(xiàn)面包屑功能,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09

最新評(píng)論

名山县| 康平县| 齐齐哈尔市| 黔西| 南部县| 福建省| 罗甸县| 宁晋县| 曲靖市| 嵊泗县| 突泉县| 彩票| 霍城县| 吴桥县| 石景山区| 麦盖提县| 宁河县| 东乡县| 旬阳县| 三门县| 海淀区| 涡阳县| 石首市| 耒阳市| 上思县| 湘乡市| 尼勒克县| 高碑店市| 农安县| 泗阳县| 昭觉县| 霞浦县| 高雄县| 台山市| 日照市| 雷波县| 景德镇市| 连城县| 荃湾区| 霍林郭勒市| 娱乐|