2024-12-17 符合 props 定義的格式 是什麼格式?
2024-12-17 符合 props 定義的格式 是什麼格式?
符合 props 定義的格式 是什麼格式?
在 Vue 中,**props 定義的格式,就是用來描述父組件需要傳給子組件的資料的形態和規則**。當你使用 props 時,需要遵循以下格式與規則來定義和傳遞資料。
1. 基本格式
在子組件的 props 選項中,你可以用多種方式定義接收的 props,從最簡單的形式到更嚴格的類型檢查。
(1) 字串陣列格式
如果你只想定義 props 的名稱而不檢查類型,可以使用字串陣列的方式:
1 | props: ['title', 'members'] |
- 這代表子組件可以接收
title和members,但不會對它們的類型或結構進行驗證。
(2) 對象格式
當你需要檢查類型或添加更多規則時,可以使用對象格式:
1 | props: { |
這裡的 title 和 members 都是 props,並且指定了它們的類型(String 和 Array)。
2. 高級格式
可以進一步添加更多選項,例如:是否必填、預設值、型別檢查等。
(1) 基本型別驗證
你可以用 Vue 提供的型別來檢查 props 的格式:
1 | props: { |
(2) 多種型別驗證
如果一個 prop 可以是多種類型,可以用陣列定義:
1 | props: { |
3. 父組件如何傳入 props
父組件在使用子組件時,通過屬性傳遞 props,格式如下:
1 | <AddExpenseModal :title="modalTitle" :members="groupMembers" /> |
:title="modalTitle":傳遞父組件中的變數modalTitle作為子組件的title。:members="groupMembers":傳遞父組件中的變數groupMembers作為子組件的members。
這裡的 modalTitle 和 groupMembers 必須符合子組件 props 定義的格式,例如類型是正確的。
4. Vue 的型別驗證規則
Vue 在執行時會檢查傳入的 props 是否符合定義,並在控制台顯示警告。如果你傳入的資料不符合定義,例如類型錯誤,會出現以下情況:
- 正確: 資料會正確地傳遞到子組件。
- 錯誤: Vue 會在開發模式下顯示警告,但不會阻止程式執行。
例如:
1 | props: { |
如果父組件傳入的 members 不是陣列,Vue 就會顯示警告:
1 | [Vue warn]: Invalid prop: type check failed for prop "members". Expected Array, got Object. |
5. 綜合範例
假設我們有一個子組件 AddExpenseModal.vue:
1 | export default { |
父組件使用時:
1 | <AddExpenseModal :members="groupMembers" :title="'新增支出表單'" /> |
傳遞的資料:
- 父組件的
groupMembers必須是陣列,否則會報警告。 - 如果沒有傳
title,子組件會使用預設值'新增支出'。
6. 常見錯誤與解決方法
(1) 傳遞類型不符
1 | props: { |
但父組件傳了字串:
1 | <AddExpenseModal :members="'這是一個字串'" /> |
會顯示警告:Invalid prop: type check failed for prop "members". Expected Array, got String.
(2) 忘記用 : 傳遞變數
正確:
1 | <AddExpenseModal :members="groupMembers" /> |
錯誤:
1 | <AddExpenseModal members="groupMembers" /> |
這樣會把字串 "groupMembers" 傳給 members,而不是變數。
總結
props定義的格式:- 可以是簡單字串陣列(
['name', 'age'])。 - 可以是物件格式(包含類型和規則)。
- 可以是簡單字串陣列(
定義規則的好處:
- 明確定義子組件應該接收什麼資料,讓程式碼更易於維護。
- 自動檢查類型,減少錯誤。
父組件傳遞
props時需要符合定義的規範,例如類型、格式和是否必填。