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

vue中Props與Attrs的實現(xiàn)實例

 更新時間:2025年09月11日 09:37:17   作者:拉不動的豬  
本文主要介紹了vue中Props與Attrs的實現(xiàn)實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

基本功能

  1. props常用來數(shù)據(jù)通信
  2. attars所有非props屬性的透穿

props傳值:

基本傳值‌

<!-- 父組件 -->
<ChildComponent title="歡迎頁面" />

<!-- 子組件 -->
<script>
export default {
  props: ['title']
}
</script>

動態(tài)綁定‌

<!-- 父組件 -->
<ChildComponent :count="dynamicValue" />

<!-- 子組件 -->
<script>
export default {
  props: ['count']
}
</script>

類型驗證‌

// 子組件
props: {
  age: {
    type: Number,
    required: true,
    validator: value => value > 0
  }
}

默認值設(shè)置‌

props: {
  theme: {
    type: String,
    default: 'light'
  }
}

對象形式傳值‌

<!-- 父組件 -->
<UserProfile v-bind="userData" />

<!-- 等價于 -->
<UserProfile 
  :name="userData.name"
  :age="userData.age"
  :email="userData.email" 
/>

attars屬性透穿

屬性透穿的主要特點既然是接受非props以外的屬性,前端可以主動接受某些特定的屬性,也可以不接受這些屬性。

實際應(yīng)用場景如下:

組件的二次封裝,比如常見的按鈕:

子組件

<template>
  <!-- 按鈕組件,使用動態(tài)class綁定 -->
  <button 
    class="base-btn" 
    :class="computedClasses" 
    v-bind="attrs"  <!-- 透傳其他屬性(如disabled、title等) -->
  >
    <slot></slot>
  </button>
</template>

<script setup>
import { useAttrs, computed } from 'vue'

// 獲取所有透傳的非props屬性
const attrs = useAttrs()

// 根據(jù)透傳的屬性計算樣式類
const computedClasses = computed(() => {
  const classes = []
  
  // 如果透傳了type屬性,添加對應(yīng)的樣式類
  if (attrs.type) {
    classes.push(`btn-${attrs.type}`)
  }
  
  // 如果透傳了size屬性,添加對應(yīng)的樣式類
  if (attrs.size) {
    classes.push(`btn-${attrs.size}`)
  }
  
  // 如果透傳了round屬性,添加圓角樣式
  if (attrs.round) {
    classes.push('btn-round')
  }
  
  // 如果透傳了special屬性,添加特殊樣式
  if (attrs.special) {
    classes.push('btn-special')
  }
  
  return classes
})
</script>

<style scoped>
/* 基礎(chǔ)按鈕樣式 */
.base-btn {
  padding: 8px 16px;
  border: none;
  cursor: pointer;
  font-size: 14px;
  transition: all 0.3s ease;
}

/* 不同類型按鈕的樣式 */
.btn-primary {
  background-color: #42b983;
  color: white;
}

.btn-danger {
  background-color: #ff4444;
  color: white;
}

.btn-warning {
  background-color: #ffbb33;
  color: black;
}

/* 不同尺寸按鈕的樣式 */
.btn-small {
  padding: 4px 8px;
  font-size: 12px;
}

.btn-large {
  padding: 12px 24px;
  font-size: 16px;
}

/* 圓角樣式 */
.btn-round {
  border-radius: 20px;
}

/* 特殊樣式 */
.btn-special {
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
  text-transform: uppercase;
  letter-spacing: 1px;
}

/* 鼠標(biāo)懸停效果 */
.base-btn:hover {
  opacity: 0.9;
  transform: translateY(-2px);
}
</style>

父組件

<template>
  <div class="button-group">
    <!-- 基礎(chǔ)按鈕 -->
    <CustomButton>基礎(chǔ)按鈕</CustomButton>
    
    <!-- 主要按鈕(帶類型) -->
    <CustomButton type="primary">主要按鈕</CustomButton>
    
    <!-- 危險按鈕(帶類型和尺寸) -->
    <CustomButton type="danger" size="large">危險按鈕</CustomButton>
    
    <!-- 警告按鈕(帶類型、尺寸和圓角) -->
    <CustomButton type="warning" size="small" round>警告按鈕</CustomButton>
    
    <!-- 特殊按鈕(帶自定義屬性) -->
    <CustomButton special title="這是一個特殊按鈕">特殊按鈕</CustomButton>
    
    <!-- 禁用狀態(tài)按鈕(透傳原生屬性) -->
    <CustomButton type="primary" disabled>禁用按鈕</CustomButton>
  </div>
</template>

<script setup>
import CustomButton from './CustomButton.vue'
</script>

<style scoped>
.button-group {
  display: flex;
  gap: 10px;
  padding: 20px;
  flex-wrap: wrap;
}
</style>

到此這篇關(guān)于vue中Props與Attrs的實現(xiàn)實例的文章就介紹到這了,更多相關(guān)vue Props Attrs內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • 零配置使用vue編寫excel預(yù)覽組件

    零配置使用vue編寫excel預(yù)覽組件

    這篇文章主要為大家詳細介紹了如何使用vue編寫excel預(yù)覽組件,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2026-03-03
  • Vue3中的常見組件通信之v-model使用詳解

    Vue3中的常見組件通信之v-model使用詳解

    這篇文章主要介紹了Vue3中的常見組件通信之v-model使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Vue組件BootPage實現(xiàn)簡單的分頁功能

    Vue組件BootPage實現(xiàn)簡單的分頁功能

    這篇文章主要為大家詳細介紹了Vue小組件BootPage實現(xiàn)簡單的分頁功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • vue實現(xiàn)瀑布流布局的示例代碼

    vue實現(xiàn)瀑布流布局的示例代碼

    這篇文章主要為大家詳細介紹了如何利用vue實現(xiàn)簡單的瀑布流布局,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2023-09-09
  • Vue組件間的雙向綁定示例解析

    Vue組件間的雙向綁定示例解析

    這篇文章主要介紹了Vue組件間的雙向綁定,我們都知道當(dāng)父組件改變了某個值后,如果這個值傳給了子組件,那么子組件也會自動跟著改變,但是這是單向的,使用v-bind的方式,即子組件可以使用父組件的值,但是不能改變這個值
    2023-03-03
  • Vue+Element實現(xiàn)網(wǎng)頁版?zhèn)€人簡歷系統(tǒng)(推薦)

    Vue+Element實現(xiàn)網(wǎng)頁版?zhèn)€人簡歷系統(tǒng)(推薦)

    這篇文章主要介紹了Vue+Element實現(xiàn)網(wǎng)頁版?zhèn)€人簡歷系統(tǒng),需要的朋友可以參考下
    2019-12-12
  • Vue中圖片Src使用變量的方法

    Vue中圖片Src使用變量的方法

    這篇文章主要介紹了Vue中圖片Src使用變量的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • vue實現(xiàn)前臺列表數(shù)據(jù)過濾搜索、分頁效果

    vue實現(xiàn)前臺列表數(shù)據(jù)過濾搜索、分頁效果

    這篇文章主要為大家詳細介紹了vue實現(xiàn)前臺列表數(shù)據(jù)過濾搜索、分頁效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Vues中使用JavaScript實現(xiàn)路由跳轉(zhuǎn)的步驟詳解

    Vues中使用JavaScript實現(xiàn)路由跳轉(zhuǎn)的步驟詳解

    在Vue應(yīng)用中,利用Vue?Router進行頁面間的導(dǎo)航是一個常見需求,本篇博客將通過示例代碼詳細介紹如何在Vue組件中使用JavaScript實現(xiàn)路由跳轉(zhuǎn),需要的朋友可以參考下
    2024-05-05
  • Vue.js中數(shù)據(jù)綁定的語法教程

    Vue.js中數(shù)據(jù)綁定的語法教程

    Vue框架很核心的功能就是雙向的數(shù)據(jù)綁定。下面這篇文章主要給大家介紹了關(guān)于Vue.js中數(shù)據(jù)綁定的語法教程,文中通過示例代碼介紹的非常詳細,相信對大家具有一的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-06-06

最新評論

南陵县| 新化县| 富裕县| 姜堰市| 汾西县| 日喀则市| 合肥市| 得荣县| 九江市| 福贡县| 文安县| 黎平县| 宿松县| 东乌珠穆沁旗| 和田县| 遵化市| 遂宁市| 铜川市| 康乐县| 隆德县| 文水县| 和静县| 当雄县| 温宿县| 合水县| 曲松县| 阳曲县| 兴海县| 阳朔县| 大丰市| 买车| 资阳市| 衡南县| 晋城| 紫金县| 山西省| 阿坝县| 吉安县| 新闻| 高州市| 怀安县|