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

Vue組件數(shù)據(jù)傳遞與props校驗方式

 更新時間:2024年08月15日 15:18:27   作者:專注寫bug  
這篇文章主要介紹了Vue組件數(shù)據(jù)傳遞與props校驗方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

前言

組件與組件之間并不是完全獨立的,他們之間可以進行一些數(shù)據(jù)的傳遞操作。

傳遞數(shù)據(jù)的解決方案就是props選項。

組件數(shù)據(jù)傳遞的幾種類型

簡單字符串類型數(shù)據(jù)專遞

比如定義兩個頁面Parent.vueChild.vue,其中Parent.vue包含Child.vue。

  • Child.vue
<template>
 <div class="div">
   <h1>子類組件</h1><br>
   <p>msg: {{ msg }}</p><br>
   <p>title: {{ title }}</p><br>
 </div>
 
</template>
<script>
export default{
 data(){
  return{
   
  }
 },
 // props 數(shù)組類型,其中保存父級傳入子級數(shù)據(jù)時,標簽上的屬性名稱
 props:["msg","title"]
}
</script>
<style scoped>
.div{
 border: 1px solid;
}</style>
  • >Parent.vue
<template>
 <h1>父類組件</h1><br>
 <ChildDemo msg="專注寫bug 父級傳入子級數(shù)據(jù)" :title="tittleMsg"/>
</template>
<script>
// 父類中引入子類
import Child from './Child.vue';
export default{
 data(){
  return{
    tittleMsg:"父級傳入子級信息2"
  }
 },
 // script 增加 setup,則不能寫邏輯,出現(xiàn)報錯,所以此處手動注入
 components:{
  // key-value 結構   別名:對應引入子類
  ChildDemo:Child
 }
}
</script>

案例效果展示:

其他類型數(shù)據(jù)(數(shù)字、數(shù)組、對象)傳遞

  • 如果按照Java語言理解,就很簡單。
  • 萬物皆對象。既然字符串是這種方式,那么其他類型也大差不差了!

直接看例子:

  • Parent.vue
<template>
 <h1>父類組件</h1><br>
 <ChildDemo msg="專注寫bug 父級傳入子級數(shù)據(jù)" 
  :title="tittleMsg" 
  :age="userAge" 
  :arrays="userLists" 
  :userInfo="userInfos" />
</template>
<script>
// 父類中引入子類
import Child from './Child.vue';
export default{
 data(){
  return{
    tittleMsg:"父級傳入子級信息2", // 字符串
    userAge:28, // number 數(shù)字類型
    userLists:["lilei","jack","tom"], // 數(shù)組類型
    userInfos:{  // object 對象類型
     id:5173,
     name:"lilei"
    }
  }
 },
 // script 增加 setup,則不能寫邏輯,出現(xiàn)報錯,所以此處手動注入
 components:{
  // key-value 結構   別名:對應引入子類
  ChildDemo:Child
 }
}
</script>
  • Child.vue
<template>
 <div class="div">
   <h1>子類組件</h1><br>
   <p>msg: {{ msg }}</p><br>
   <p>title: {{ title }}</p><br>
   <p>age: {{ age }}</p><br>
   <ul>
    <li v-for="(item,index) of arrays" :key="index">{{ item }}</li>
   </ul>

   <p>用戶基本信息編號:{{ userInfo.id  }} </p>
   <p>用戶基本信息名稱: {{ userInfo.name }}</p>
 </div>
 
</template>
<script>
export default{
 data(){
  return{
   
  }
 },
 props:["msg","title","age","arrays","userInfo"]
}
</script>
<style scoped>
.div{
 border: 1px solid;
}</style>

注意事項

  • props傳遞數(shù)據(jù)操作時,只能從父級傳遞至子級中,即:從外至內。
  • 不能反其道而行!

數(shù)據(jù)傳遞值校驗

  • 在上面的案例中,父級組件Parent.vue向子級組件Child.vue進行了傳遞數(shù)據(jù)測試。
  • 除了能滿足數(shù)據(jù)傳遞之外,props還能針對傳遞的數(shù)據(jù)限定類型、若不存在填充默認值等操作。

限定數(shù)據(jù)類型 type

比如父級中傳遞的userAgeString類型,若子級組件中定義的是Number類型。

則會出現(xiàn)什么樣的問題呢?看下面的案例。

  • ComponentA.vue
<template>
 <h1>父類組件</h1><br>
 <ComponentBDemo 
  :age="userAge"  />
</template>
<script>
// 父類中引入子類
import ComponentB from './ComponentB.vue';
export default{
 data(){
  return{
    userAge:"28", // 傳遞字符串類型
  }
 },
 // script 增加 setup,則不能寫邏輯,出現(xiàn)報錯,所以此處手動注入
 components:{
  // key-value 結構   別名:對應引入子類
  ComponentBDemo:ComponentB
 }
}
</script>

在子級組件中的props換一個寫法,指定數(shù)據(jù)的類型。

  • ComponentB.vue
<template>
 <h1>子級組件</h1><br>
 <p>age: {{ age }}</p><br>
</template>
<script>
export default{
 data(){
  return{
    
  }
 },
 props:{
  age:{ // 限定類型
   type:Number
  }
 }
}
</script>

運行后,瀏覽器查看顯示效果。

【發(fā)現(xiàn)】限定類型后,父級組件傳遞的是String類型,但子級組件限定的是Number類型,類型不一致出現(xiàn)了警告!

當然,在子級組件中,可以針對多個可能的類型進行限制,比如滿足傳入的數(shù)據(jù)是StringNumber等。

  • 修改子級組件ComponentB.vue
<template>
 <h1>子級組件</h1><br>
 <p>age: {{ age }}</p><br>
</template>
<script>
export default{
 data(){
  return{
    
  }
 },
 props:{
  age:{
   //type:Number // 限定單個類型
   type:[Number,String,Object,Array] // 支持多種類型范圍
  }
 }
}
</script>

刷新瀏覽器,查看信息。

給定默認值 default

如果子級組件中定義了某個變量的顯示項,但在父級中未傳入對應的值,此時子級組件在渲染顯示的時候,不會將該變量標簽進行顯示。

  • ComponentB.vue
<template>
 <h1>子級組件</h1><br>
 <p>age: {{ age }}</p><br>
 <p>{{ userName }}</p><br>
</template>
<script>
export default{
 data(){
  return{
    
  }
 },
 props:{
  age:{
   //type:Number // 限定單個類型
   type:[Number,String,Object,Array]
  },
  userName:{
   type:String
  }
 }
}
</script>

子級組件定義userName變量的顯示,但父級未傳遞值,此時瀏覽器中的顯示信息如下:

如果說父級組件未傳遞值時,需要子級組件中默認顯示一些信息,可以寫成下面這種形式。

<template>
 <h1>子級組件</h1><br>
 <p>age: {{ age }}</p><br>
 <p>{{ userName }}</p><br>
</template>
<script>
export default{
 data(){
  return{
    
  }
 },
 props:{
  age:{
   //type:Number // 限定單個類型
   type:[Number,String,Object,Array]
  },
  userName:{
   type:String,
   default:"父級未傳遞值,默認顯示這句話!"
  }
 }
}
</script>

核心就是針對未傳遞值的變量增加default標識 。

export default{
 data(){
  return{
    
  }
 },
 props:{
  age:{
   //type:Number // 限定單個類型
   type:[Number,String,Object,Array]
  },
  userName:{
   type:String,
   default:"父級未傳遞值,默認顯示這句話!"
  }
 }
}

此時頁面的顯示效果如下所示:

如果父級傳遞了數(shù)據(jù)。那么顯示效果又是怎么樣的呢?

  • >ComponentA.vue

此時瀏覽器中的顯示效果如下所示:

【注意】數(shù)字Number和字符串String類型,可以直接指定default默認值。如果是對象或者數(shù)組類型,則需要使用工廠函數(shù)返回默認值!

驗證數(shù)組類型的數(shù)據(jù)默認值定義。

<template>
 <h1>子級組件</h1><br>
 <p>age: {{ age }}</p><br>
 <p>{{ userName }}</p><br>
 <ul>
    <li v-for="(item,index) of arrays" :key="index">{{ item }}</li>
   </ul>
</template>
<script>
export default{
 data(){
  return{
    
  }
 },
 props:{
  age:{
   //type:Number // 限定單個類型
   type:[Number,String,Object,Array]
  },
  userName:{
   type:String,
   default:"父級未傳遞值,默認顯示這句話!"
  },
  arrays:{ // 數(shù)組類型的變量
   type:Array,
   default(){ // 工廠函數(shù)返回默認對象
    return ["這只是默認的數(shù)組展示項"]
   }
  }
 }
}
</script>

數(shù)組類型默認值展示效果:

指定必選項 required

在上面說了一個顯示效果:

  • 如果父級未傳遞指定變量數(shù)據(jù),則在子級組件中會渲染對應的標簽,但不會給變量賦值!
  • 如果必須強制指定必須傳遞對應的值,此時則需要使用到required:true標識。

如下所示:

  • 父級未傳遞值msg,子級組件對應變量指定必傳!
<template>
 <h1>子級組件</h1><br>
 <p>age: {{ age }}</p><br>
 <p>{{ userName }}</p><br>
 <ul>
    <li v-for="(item,index) of arrays" :key="index">{{ item }}</li>
   </ul>
</template>
<script>
export default{
 data(){
  return{
    
  }
 },
 props:{
  age:{
   //type:Number // 限定單個類型
   type:[Number,String,Object,Array]
  },
  userName:{
   type:String,
   default:"父級未傳遞值,默認顯示這句話!"
  },
  arrays:{
   type:Array,
   default(){
    return ["這只是默認的數(shù)組展示項"]
   }
  },
  msg:{ // 父級未傳遞該變量
   type:String,
   required:true
  }
 }
}
</script>

此時瀏覽器中的顯示效果如下:

丟失必選項msg值。

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Vue + Scss 動態(tài)切換主題顏色實現(xiàn)換膚的示例代碼

    Vue + Scss 動態(tài)切換主題顏色實現(xiàn)換膚的示例代碼

    這篇文章主要介紹了Vue + Scss 動態(tài)切換主題顏色實現(xiàn)換膚的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • vue結合el-upload實現(xiàn)騰訊云視頻上傳功能

    vue結合el-upload實現(xiàn)騰訊云視頻上傳功能

    這篇文章主要介紹了vue結合el-upload實現(xiàn)騰訊云視頻上傳功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • 關于el-tooltip使用\n換行的情況顯示

    關于el-tooltip使用\n換行的情況顯示

    這篇文章主要介紹了關于el-tooltip使用\n換行的情況顯示,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • vue中如何實現(xiàn)pdf文件預覽的方法

    vue中如何實現(xiàn)pdf文件預覽的方法

    這篇文章主要介紹了vue中如何實現(xiàn)pdf文件預覽的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • Nuxt.js實戰(zhàn)詳解

    Nuxt.js實戰(zhàn)詳解

    這篇文章主要介紹了Nuxt.js實戰(zhàn)詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Vue?調用攝像頭掃描條碼功能實現(xiàn)代碼

    Vue?調用攝像頭掃描條碼功能實現(xiàn)代碼

    本文介紹了如何使用Vue.js和jsQR庫來實現(xiàn)調用攝像頭并掃描條碼的功能,通過安裝依賴、獲取攝像頭視頻流、解析條碼等步驟,實現(xiàn)了從開始掃描到停止掃描的完整流程,同時,還強調了瀏覽器兼容性、HTTPS環(huán)境、權限問題和性能優(yōu)化的重要性,感興趣的朋友一起看看吧
    2025-03-03
  • 使用Vue3和Vite實現(xiàn)對低版本瀏覽器的兼容

    使用Vue3和Vite實現(xiàn)對低版本瀏覽器的兼容

    在使用Vite和Vue3構建的JavaScript項目中,確保對低版本瀏覽器的兼容性是一個重要的考慮因素,以下是一些具體的解決方案和步驟,可以幫助你實現(xiàn)這一目標,需要的朋友可以參考下
    2024-11-11
  • Vue腳手架安裝時遇到的無法安裝問題詳解

    Vue腳手架安裝時遇到的無法安裝問題詳解

    開發(fā)中遇到bug是在正常不過了,而程序也基本都是bug堆里爬出來的,下面這篇文章主要給大家介紹了關于Vue腳手架安裝時遇到的無法安裝問題的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • go-gin-vue3-elementPlus帶參手動上傳文件的案例代碼

    go-gin-vue3-elementPlus帶參手動上傳文件的案例代碼

    這篇文章主要介紹了go-gin-vue3-elementPlus帶參手動上傳文件的案例代碼,本文結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • Vue 框架之鍵盤事件、健值修飾符、雙向數(shù)據(jù)綁定

    Vue 框架之鍵盤事件、健值修飾符、雙向數(shù)據(jù)綁定

    這篇文章主要介紹了Vue 框架之鍵盤事件、健值修飾符、雙向數(shù)據(jù)綁定問題,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11

最新評論

陈巴尔虎旗| 潢川县| 廊坊市| 邵阳县| 都匀市| 丘北县| 安康市| 三明市| 南通市| 蒙阴县| 五指山市| 青海省| 西藏| 武邑县| 商洛市| 浦北县| 竹北市| 思南县| 兰考县| 茂名市| 安岳县| 吉首市| 临汾市| 宁陕县| 莒南县| 孝感市| 东港市| 长顺县| 高邮市| 甘泉县| 灵台县| 华阴市| 武平县| 广河县| 望奎县| 宝鸡市| 嘉善县| 延长县| 阜宁县| 合川市| 西乌|