選單
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Vue 教程

Vue 首頁 Vue Intro Vue Directives Vue v-bind Vue v-if Vue v-show Vue v-for Vue Events Vue v-on Vue Methods Vue Event Modifiers Vue Forms Vue v-model Vue CSS Binding Vue Computed Properties Vue Watchers Vue Templates

Scaling Up

Vue 為什麼、如何以及設定 Vue 第一個 SFC 頁面 Vue 元件 Vue Props Vue v-for 元件 Vue $emit() Vue 傳遞屬性 Vue 作用域樣式 Vue 本地元件 Vue 插槽 Vue v-slot Vue 作用域插槽 Vue 動態元件 Vue Teleport Vue HTTP 請求 Vue 模板引用 Vue 生命週期鉤子 Vue Provide/Inject Vue 路由 Vue 表單輸入 Vue 動畫 Vue v-for 動畫 Vue 構建 Vue Composition API

Vue Reference

Vue Built-in Attributes Vue Built-in Components Vue Built-in Elements Vue Component Instance Vue Directives Vue Instance Options Vue Lifecycle Hooks

Vue 示例

Vue Examples Vue Exercises Vue Quiz Vue Server Vue Certificate

Vue 傳遞屬性

元件可以接受未宣告為 prop 的屬性,這些屬性將簡單地傳遞到元件的根元素。

透過傳遞屬性,您可以在父元件中更好地概覽元件的建立,並且可以簡化我們的程式碼,因為我們不必將屬性宣告為 prop。

通常用於傳遞的屬性是 classstylev-on

傳遞屬性

例如,從父元件控制組件的樣式會比將樣式隱藏在元件內部要好。

讓我們建立一個新的示例,一個 Vue 中的基本待辦事項列表,看看 style 屬性如何傳遞到代表待辦事項的元件。

因此,我們的 App.vue 應包含待辦事項列表,一個 <input> 元素和一個 <button> 來新增新的待辦事項。每個列表項都是一個 <todo-item /> 元件。

App.vue:

<template>
  <h3>Todo List</h3>  
  <ul>
    <todo-item
      v-for="x in items"
      :key="x"
      :item-name="x"
    />
  </ul>
  <input v-model="newItem">
  <button @click="addItem">Add</button>
</template>

<script>
  export default {
    data() {
      return {
        newItem: '',
        items: ['Buy apples','Make pizza','Mow the lawn']
      };
    },
    methods: {
      addItem() {
        this.items.push(this.newItem),
        this.newItem = '';
      }
    }
  }
</script>

TodoItem.vue 僅透過 prop 接收待辦事項的描述

TodoItem.vue:

<template>
  <li>{{ itemName }}</li>
</template>

<script>
  export default {
    props: ['itemName']
  }
</script>

為了正確構建我們的應用程式,我們還需要在 main.js 中進行正確的設定

main.js:

import { createApp } from 'vue'
  
import App from './App.vue'
import TodoItem from './components/TodoItem.vue'

const app = createApp(App)
app.component('todo-item', TodoItem)
app.mount('#app')

為了理解本節的重點,即屬性可以傳遞到我們元件 <template> 中的根元素,我們可以為列表項設定一些來自 App.vue 的樣式

示例

我們為元件內的 <li> 元素設定樣式,來自 App.vue

<template>
  <h3>Todo List</h3>
  <ul>
    <todo-item
      v-for="x in items"
      :key="x"
      :item-name="x"
      style="background-color: lightgreen;"
    />
  </ul>
  <input v-model="newItem">
  <button @click="addItem">Add</button>
</template>
執行示例 »

要確認 style 屬性實際上已經傳遞,您可以在瀏覽器中右鍵單擊待辦事項列表中的 <li> 元素,選擇“檢查”,您就可以看到 style 屬性現在已新增到 <li> 元素上了


合併 'class' 和 'style' 屬性

如果 'class' 或 'style' 屬性已設定,並且 'class' 或 'style' 屬性也來自父元件作為傳遞屬性,則這些屬性將被合併。

示例

除了父元件的現有樣式外,我們還為 TodoItem.vue 元件內的 <li> 元素添加了 margin

<template>
  <li style="margin: 5px 0;">{{ itemName }}</li>
</template>

<script>
  export default {
    props: ['itemName']
  }
</script>
執行示例 »

如果在瀏覽器中右鍵單擊 <li> 元素,您可以看到屬性已被合併。Margin 直接設定在元件內的 <li> 元素上,並與從父元件傳遞的 background-color 合併


$attrs

如果元件的根級別有多個元素,就不清楚屬性應該傳遞到哪個元素。

要定義哪個根元素獲取傳遞的屬性,我們可以使用內建的 $attrs 物件來標記該元素,如下所示

示例

TodoItem.vue:

<template>
  <div class="pinkBall"></div>
  <li v-bind="$attrs">{{ itemName }}</li>
  <div class="pinkBall"></div>
</template>
執行示例 »

Vue 練習

透過練習來測試自己

練習

將 'fish-type' 元件的根元素設定為屬於 'blue' CSS 類(建立傳遞屬性)。

<fish-type  />

開始練習



×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援