淺析vue中的組件傳值
前言:
只要是做項目,組件和組件之間的傳值是不可避免的,那么怎樣才能完成組件之間的傳值呢?我總結(jié)了以下幾點,若有不足,歡迎補(bǔ)充
一、正向傳值
基本寫法:
props:[“接收變量1”,“接收變量2”。。。。。。。]
使用:
1,在需要接收數(shù)據(jù)的子組件中,定義props設(shè)置接收變量
<template>
<div>
<!-- 2.直接向變量一樣進(jìn)行使用 -->
zizizizzizizizizizi---{{title}}
</div>
</template>
<script>
export default {
// 1.定義了接收參數(shù)
props:["title"]
}
</script>
<style>
</style>2,父組件傳遞
在子組件被調(diào)用的位置,父組件給接受數(shù)據(jù)上傳值
<template>
<div>
fufuffufufuf----{{text}}
<!-- 3.子組件接收父組件的數(shù)據(jù) -->
<Zi :title="text"/>
<Zib/>
</div>
</template>
<script>
import Zi from "./zi.vue"
import Zib from "./zib.vue"
export default {
data(){
return {
text:"你好我是fufuffu的變量??!"
}
},
components:{
Zi,Zib
}
}
</script>
<style>
</style>驗證寫法 props驗證
就是在正向傳值的時候,有時候需要對傳遞過來的數(shù)據(jù)進(jìn)行格式類型上的約束,傳統(tǒng)的proposal寫法傳遞任何內(nèi)容都是可以的,但是如果要約束,那么我們可以使用props驗證的寫法,對正向傳值歸來的數(shù)據(jù)格式進(jìn)行驗證
語法:
props:{
你定義的接受數(shù)據(jù)變量:你要的數(shù)據(jù)類型
}
<template>
<div>
<!-- 2.直接向變量一樣進(jìn)行使用 -->
zizizizzizizizizizi---{{title+6}}
</div>
</template>
<script>
export default {
// 1.定義了接收參數(shù)
// props:["title"]
// props驗證
props:{
title:Number
}
}
</script>
<style>
</style>注意:
proposal驗證是驗證我們傳遞參數(shù)的時候數(shù)據(jù)的格式和類型的校驗,就算傳遞的數(shù)據(jù)類型不符合我們的規(guī)則,從用戶的角度看不會有影響顯示,但是會在控制臺有個警告提示
更多驗證
1,多種類型
props:{
title:[Number,String]
}2,默認(rèn)值
// 默認(rèn)值
props:{
title:{
// 類型
type:String,
// 默認(rèn)值
default:"我是默認(rèn)值"
}
}二、逆向傳值
子組件把數(shù)據(jù)傳遞給父組件
逆向傳值默認(rèn)是不允許的 要用自定義事件完成
自定義事件
this.$emit("自定義事件名",“傳遞給自定義事件的數(shù)據(jù)”)
實現(xiàn)逆向傳值
1,因為逆向傳值默認(rèn)不允許,需要通過事件來觸發(fā)一個自定義事件拋出
代碼:
<template>
<div>
zizizizizizizi
<button @click="btn()">點擊逆向傳值</button>
</div>
</template>
<script>
export default {
data() {
return {
text:"我是子組件的變量"
}
},
methods: {
btn(){
this.$emit("btn",this.text)
}
},
}
</script>
<style>
</style>2,在父組件中接收子組件拋出的自定義事件
<template>
<div>
fufufufuufuf-----------{{futext}}
<Zi @btn="fufun"/>
</div>
</template>
<script>
import Zi from "./zi.vue"
export default {
data() {
return {
futext:""
}
},
components:{
Zi
},
methods: {
fufun(val){
console.log(val);
this.futext=val
}
}
}
</script>
<style>
</style>ref的方式完成:
只需要把ref綁定到組件上
三、同胞傳值/兄弟傳值
low的方式(了解)
兩個兄弟組件之間需要傳遞數(shù)據(jù),a組件先逆向傳值給父組件,父組件在正向傳值給b組件
中央事件總線 eventBus
中央事件總線就是凌駕在我們需要同胞傳值的組件之上的一個空的vue實例
eventBus文件夾就是用來存放中央事件總線這個實例的- 在新建的文件夾與文件之間創(chuàng)建一個空的vue實例
// 1,創(chuàng)建中央事件總線 import Vue from "vue" export default new Vue
拋出
methods: {
fun(){
eventBus.$emit("apao",this.ziatext)
}
}接收
$on()監(jiān)聽實例上的自定義事件
$on(“你要監(jiān)聽的中自定義時間是什么”,()=》{
console.log(val)
})
<script>
// 1,引用中央事件總線
import eventBus from "@/eventBus"
export default {
?// 2,通過生命周期的鉤子函數(shù)來調(diào)用$on進(jìn)行實力上自定義事件的監(jiān)聽
mounted(){
eventBus.$on("apao",(val)=>{
console.log(val);
})
}
}
</script>到此這篇關(guān)于淺析vue中的組件傳值的文章就介紹到這了,更多相關(guān)vue組件傳值 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue-video-player實現(xiàn)實時視頻播放方式(監(jiān)控設(shè)備-rtmp流)
這篇文章主要介紹了vue-video-player實現(xiàn)實時視頻播放方式(監(jiān)控設(shè)備-rtmp流),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
vue項目實現(xiàn)會議預(yù)約功能(包含某天的某個時間段和某月的某幾天)
這篇文章主要介紹了vue項目實現(xiàn)會議預(yù)約功能(包含某天的某個時間段和某月的某幾天),本文結(jié)合實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-02-02
vue 使用async寫數(shù)字動態(tài)加載效果案例
這篇文章主要介紹了vue 使用async寫數(shù)字動態(tài)加載效果案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
Vue實現(xiàn)數(shù)據(jù)篩選與搜索功能的示例代碼
在許多Web應(yīng)用程序中,數(shù)據(jù)篩選和搜索是關(guān)鍵的用戶體驗功能,本文將深入探討在Vue中如何進(jìn)行數(shù)據(jù)篩選與搜索的實現(xiàn),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10
關(guān)于vue.js v-bind 的一些理解和思考
本篇文章主要介紹了關(guān)于vue.js v-bind 的一些理解和思考,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06
vue+ElementUI 關(guān)閉對話框清空驗證,清除form表單的操作
這篇文章主要介紹了vue+ElementUI 關(guān)閉對話框清空驗證,清除form表單的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
vuex之this.$store.dispatch()與this.$store.commit()的區(qū)別及說明
這篇文章主要介紹了vuex之this.$store.dispatch()與this.$store.commit()的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06

