中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

機(jī)械建設(shè)網(wǎng)站制作建站之星官方網(wǎng)站

機(jī)械建設(shè)網(wǎng)站制作,建站之星官方網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì)與制作課程思政,網(wǎng)站建設(shè)模板簡(jiǎn)單何為組件間傳值 在Vue3之組件文章中,我們學(xué)會(huì)了定義使用組件,但是我們似乎還缺少什么將組件之間聯(lián)系起來(lái),說到組件之間的聯(lián)系就不得不提組件間的傳值,而組件間的傳值其實(shí)也不難理解,就是如何在子組件中接收到父組件傳…

何為組件間傳值

在Vue3之組件文章中,我們學(xué)會(huì)了定義使用組件,但是我們似乎還缺少什么將組件之間聯(lián)系起來(lái),說到組件之間的聯(lián)系就不得不提組件間的傳值,而組件間的傳值其實(shí)也不難理解,就是如何在子組件中接收到父組件傳遞到值。本文就介紹如何將父組件中的值傳遞到子組件中。

實(shí)例解析

組件間傳值分為靜態(tài)傳參和動(dòng)態(tài)傳參。動(dòng)態(tài)傳參顧名思義就是傳遞的參數(shù)可以動(dòng)態(tài)變化。靜態(tài)傳參是直接傳參數(shù),傳的是固定字符串。另外,組件間還可以傳遞多個(gè)參數(shù)并且對(duì)傳遞的參數(shù)做校驗(yàn)。

1.靜態(tài)傳參

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><script src="https://unpkg.com/vue@next"></script><title>組件間傳值</title>
</head>
<body><div id="root"></div>
</body>
<script>const app = Vue.createApp({template: `<div><test content = "hello world"/></div>` });// 定義一個(gè)test組件app.component('test',{props: ['content'],template: `<div>{{content}}</div>`});const vm = app.mount('#root');
</script>
</html>

如上例所示,我們定義了一個(gè)test組件用于演示,在父組件中調(diào)用子組件test,并從父組件中傳遞一個(gè)content為hello world的內(nèi)容給子組件,在父組件中傳遞的時(shí)候直接使用類似于定義div屬性的方式:
<test content = "hello world"/>
子組件接收的時(shí)候,需要加一個(gè)props屬性去接收,然后再顯示出來(lái):

props: ['content'],
template: `<div>{{content}}</div>`

這時(shí)我們?cè)跒g覽器中運(yùn)行html代碼就可以得到:
在這里插入圖片描述

2.動(dòng)態(tài)傳參

使用動(dòng)態(tài)傳參傳遞代碼如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><script src="https://unpkg.com/vue@next"></script><title>組件間傳值</title>
</head>
<body><div id="root"></div>
</body>
<script>const app = Vue.createApp({data() {return {num:456}},template: `<div><test v-bind:content = "num"/></div>` });// 定義一個(gè)test組件app.component('test',{props: ['content'],template: `<div>{{content}}</div>`});const vm = app.mount('#root');
</script>
</html>

如上面的代碼所示,我們定義的組件和靜態(tài)傳參數(shù)時(shí)定義的一樣,不同的是傳遞值的父組件,在父組件中,我們需要將需要改變的值定義到data()方法中,再通過v-bind的方式綁定數(shù)據(jù)到子組件中,代碼如下:

const app = Vue.createApp({data() {return {num:456}},template: `<div><test v-bind:content = "num"/></div>` });

<test v-bind:content = "num"/> 也可以簡(jiǎn)寫成 <test :content = "num"/>

3 組件間傳遞多個(gè)參數(shù)

從上面的例子中我們知道要在組件間傳遞值,需要定義一個(gè)屬性,填充數(shù)據(jù),然后在對(duì)應(yīng)的組件中使用一個(gè)props去接收,那當(dāng)我們需要在組件間傳遞多個(gè)參數(shù)時(shí),我們需要定義多個(gè)參數(shù)嗎?我們先看下面的代碼:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><script src="https://unpkg.com/vue@next"></script><title>組件間傳值</title>
</head>
<body><div id="root"></div>
</body>
<script>const app = Vue.createApp({data() {return {num:456,a:123,b:456,c:789}},template: `<div><test v-bind:content = "num" :a="a" :b="b" :c="c"/></div>` });// 定義一個(gè)test組件app.component('test',{props: ['content','a','b','c'],template: `<div>{{content}}---{{a}}---{}---{{c}}</div>`});const vm = app.mount('#root');
</script>
</html>

我們假設(shè)要傳遞四個(gè)參數(shù),num,a,b,c到自組件,上面的代碼中,我們可以看到要定義四個(gè)屬性和值,寫起來(lái)特別的麻煩,因?yàn)槟壳熬退膫€(gè)參數(shù),如果要是需要傳十幾個(gè)參數(shù)時(shí),再這么寫就很繁瑣了,而且容易寫錯(cuò)。雖然可以運(yùn)行,上面的代碼運(yùn)行結(jié)果:
在這里插入圖片描述我們傳遞多個(gè)值的正確方法應(yīng)該是傳遞一個(gè)對(duì)象過去,這個(gè)對(duì)象中保存了我們想要傳遞的所有參數(shù),這樣的話會(huì)方便很多,如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><script src="https://unpkg.com/vue@next"></script><title>組件間傳值</title>
</head>
<body><div id="root"></div>
</body>
<script>const app = Vue.createApp({data() {return {params:{num:456,a:123,b:456,c:789}}},template: `<div><test v-bind = "params"/></div>` });// 定義一個(gè)test組件app.component('test',{props: ['num','a','b','c'],template: `<div>{{num}}---{{a}}---{}---{{c}}</div>`});const vm = app.mount('#root');
</script>
</html>

傳遞多個(gè)參數(shù)時(shí)可以在data()方法中定義一個(gè)對(duì)象,如本例中的,params。

   data() {return {params:{num:456,a:123,b:456,c:789}}}

傳遞的時(shí)候通過v-bind = "params" 傳遞,使用的時(shí)候也是通過props接收,想要啥數(shù)據(jù)接收啥數(shù)據(jù)

   app.component('test',{props: ['num','a','b','c'],template: `<div>{{num}}---{{a}}---{}---{{c}}</div>`});

這就實(shí)現(xiàn)了組件之間傳遞多個(gè)值

4.組件間傳值校驗(yàn)

有時(shí)候我們需要對(duì)傳遞過來(lái)的值進(jìn)行校驗(yàn),看傳遞過來(lái)的值是不是我們想要的類型,或者是傳遞過來(lái)的值是否符合我們的條件,這些校驗(yàn)工作需要在客戶端實(shí)現(xiàn)。

示例代碼:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><script src="https://unpkg.com/vue@next"></script><title>組件間傳值</title>
</head>
<body><div id="root"></div>
</body>
<script>const app = Vue.createApp({data() {return {value:123}},template: `<div><test :content = "value"/></div>` });// 定義一個(gè)test組件app.component('test',{props: {content:String},template: `<div>{{content}}</div>`});const vm = app.mount('#root');
</script>
</html>

父組件傳遞值的時(shí)候還是和以前一樣,只是在接收值的時(shí)候,我們使用的方式是:props{}的方式

 app.component('test',{props: {content:String},template: `<div>{{content}}</div>`});

這里的意思是我們希望接收到的數(shù)據(jù)是string類型的,假設(shè)父組件給我傳遞的類型不是string類型的,如上面的例子,就會(huì)報(bào)警告,我們運(yùn)行代碼并且打開網(wǎng)頁(yè)的檢查選項(xiàng)可以看到如下的結(jié)果:


在這里插入圖片描述

我們發(fā)現(xiàn)雖然也能顯示傳遞過來(lái)的值,但是會(huì)報(bào)警告,假設(shè)我們傳遞過來(lái)的值類型是正確的,那么就不會(huì)報(bào)警,我們可以把父組件中的值改成string類型的。這時(shí)候我們會(huì)發(fā)現(xiàn)警告消失了。


在這里插入圖片描述

注:可以校驗(yàn)的值有 String,Boolena,Array,Object,Functon,Symbol


在接收值的時(shí)候,我們還可以如下校驗(yàn)我們接收的值:

 // 定義一個(gè)test組件app.component('test',{props: {content:{type:String,required:true}},template: `<div>{{content}}</div>`});

接收的時(shí)候?qū)ontent進(jìn)行多方面驗(yàn)證,比如是否是必須傳遞的,加required關(guān)鍵字,這時(shí)如果傳遞過來(lái)的數(shù)據(jù)不符合要求,就會(huì)報(bào)警告,比如我們要求傳String 類型的結(jié)果卻傳來(lái)int,這時(shí)結(jié)果就是:

在這里插入圖片描述


我們也可以加一個(gè)default項(xiàng)假如父組件不傳遞值的話默認(rèn)顯示的值:

 // 定義一個(gè)test組件app.component('test',{props: {content:{type:String,default:"9527"}},template: `<div>{{content}}</div>`});

父組件不傳遞值的話就會(huì)顯示設(shè)置的默認(rèn)值:9527

在這里插入圖片描述


假如我們想要對(duì)傳遞的值本身做下驗(yàn)證,比如規(guī)定傳遞的值必須小于某個(gè)值應(yīng)該怎么做呢,這就需要用到validator屬性了,具體如下

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><script src="https://unpkg.com/vue@next"></script><title>組件間傳值</title>
</head>
<body><div id="root"></div>
</body>
<script>const app = Vue.createApp({data() {return {value:300}},template: `<div><test :content = "value"/></div>` });// 定義一個(gè)test組件app.component('test',{props: {content:{type:Number,validator:function(value){return value < 200;}}},template: `<div>{{content}}</div>`});const vm = app.mount('#root');
</script>
</html>

上面的例子中我們接收值的時(shí)候做了驗(yàn)證,接收的值必須小于200

  props: {content:{type:Number,validator:function(value){return value < 200;}}}

如果我們傳一個(gè)大于200的值,則會(huì)校驗(yàn)失敗,然后報(bào)警告


在這里插入圖片描述


總結(jié)

本文我們學(xué)習(xí)了組件之間的傳參分為動(dòng)態(tài)傳參和靜態(tài)傳參以及傳遞多個(gè)參數(shù)和對(duì)傳遞的參數(shù)做驗(yàn)證,組件間的傳參可以方便我們?cè)诟附M件和子組件間通信,在提高組件的復(fù)用性的同時(shí)也讓組件間可以很好的結(jié)合起來(lái)。建議讀者多做練習(xí),熟練掌握。

http://www.risenshineclean.com/news/57710.html

相關(guān)文章:

  • 一級(jí)a做片免費(fèi)網(wǎng)站旅游搜索量環(huán)比增188%
  • 可以做查詢功能的網(wǎng)站鎮(zhèn)江網(wǎng)站建設(shè)推廣
  • seo網(wǎng)站關(guān)鍵詞優(yōu)化方法網(wǎng)絡(luò)推廣的方法你知道幾個(gè)?
  • 長(zhǎng)春網(wǎng)站建設(shè)案例天津快速關(guān)鍵詞排名
  • 做網(wǎng)站公司工資軟文寫作技巧有哪些
  • 龍崗網(wǎng)站設(shè)計(jì)網(wǎng)絡(luò)推廣的方法有哪些
  • 如何做網(wǎng)站品類廣州軟件系統(tǒng)開發(fā)seo推廣
  • 如何做品牌網(wǎng)站汕頭網(wǎng)站建設(shè)技術(shù)外包
  • 平面設(shè)計(jì)接單一個(gè)月多少錢寧波網(wǎng)站推廣網(wǎng)站優(yōu)化
  • 網(wǎng)站文件夾怎么做湖南長(zhǎng)沙關(guān)鍵詞推廣電話
  • 網(wǎng)站開發(fā)(七)數(shù)據(jù)庫(kù)的建表與連接云南疫情最新情況
  • 網(wǎng)站做nat映射需要哪些端口市場(chǎng)營(yíng)銷策劃ppt
  • 如何做商業(yè)網(wǎng)站分析長(zhǎng)春網(wǎng)站建設(shè)團(tuán)隊(duì)
  • 網(wǎng)站流量少怎么辦鄭州百度推廣公司
  • wordpress 插件頁(yè)面seo關(guān)鍵詞排名點(diǎn)擊工具
  • 新浪推網(wǎng)站阿里大數(shù)據(jù)官網(wǎng)
  • 泉州網(wǎng)站建設(shè)公司首選網(wǎng)站綜合查詢工具
  • 個(gè)人適合做什么網(wǎng)站域名停靠網(wǎng)頁(yè)推廣大全
  • 英文 日文網(wǎng)站建設(shè)申請(qǐng)線上營(yíng)銷的優(yōu)勢(shì)
  • 一級(jí)a做爰片在線看網(wǎng)站公司搜索seo
  • 襄陽(yáng)營(yíng)銷型網(wǎng)站愛站網(wǎng)絡(luò)挖掘詞
  • 深圳最新消息公布長(zhǎng)沙seo服務(wù)
  • 做調(diào)查問卷賺錢網(wǎng)站有哪些培訓(xùn)seo哪家學(xué)校好
  • 網(wǎng)站建設(shè)投訴去哪里投訴軟件推廣的渠道是哪里找的
  • 什么是網(wǎng)站域名?會(huì)計(jì)培訓(xùn)班要多少錢一般要學(xué)多久
  • 電子商務(wù)網(wǎng)站建設(shè)與管理習(xí)題答案免費(fèi)服務(wù)器
  • 免費(fèi)網(wǎng)站推廣工具有哪些百度搜索排行榜前十名
  • 如何做網(wǎng)站的的關(guān)鍵詞網(wǎng)絡(luò)培訓(xùn)學(xué)校
  • 免費(fèi)做網(wǎng)站wxp114百度愛采購(gòu)優(yōu)化軟件
  • 長(zhǎng)春市疫情最新消息今天行動(dòng)軌跡湖南網(wǎng)站seo營(yíng)銷