vue (10) vue props 外層傳入資料
Props 說明
當外部元件想將資料傳入內部元件時,可以用 props
在元件上使用 v-bind 動態將外層資料傳入 photo 元件內
1 | <photo :url="imgUrl"></photo> |
在內元件使用 props 屬性來接收資料,這邊我們使用陣列帶入 props 名稱。
1 | app.component('photo', { |
沒有使用 v-bind 帶入的 props 都會被視為字串
1 | <BlogPost title="My journey with Vue" /> |
單向資料流的概念
在 Vue.js 中,props(屬性)是父組件向子組件傳遞數據的主要方式。這個過程遵循單向資料流的原則,即數據只能從父組件傳遞到子組件,而不能反向傳遞。
- 數據源於父組件:父組件通過 props 將數據傳遞給子組件。
- 子組件接收數據:子組件接收這些 props 並將其作為自己的本地數據來使用。
- 禁止修改 props:子組件不能直接修改從父組件接收到的 props。如果子組件需要修改數據,它應該通過向父組件發出事件請求父組件來改變數據,從而保持數據流的單向性。
為什麼使用單向資料流
- 數據管理簡單:單向資料流使得數據流動方向清晰可見,易於追蹤和管理。
- 狀態同步:父組件是數據的唯一來源,避免了多個組件之間的數據同步問題。
- 易於調試:因為數據流向單一且明確,調試起來更為簡單。
想修改props的解法
有兩種情況會想直接修改 porps 的值:
- 當 props 被傳入當作元件初始值時,這種情形應該在子元件內用 data 去接收 props,避免直接修改 props。
1 | export default { |
- 傳入的 props 需要被加工處理時,可以用 computed 處理 props
1 | export default { |
props 命名規則
- 在 JavaScript 中使用駝峰命名法(camelCase)。
- 在模板(HTML)中使用短橫線命名法(kebab-case)。
1 | // 在 JavaScript 中 |
props 的型別
1 | <props-type money="true"></props-type> // 字串型別 |
當沒有使用 v-bind的方式傳入值時,傳入的一律為字串型別。若用v-bind 傳入時,則看傳入的變數是什麼型別。
- 型別檢查
在內部元件可以對傳入的 props 做型別檢查。
基本類型檢查
1 | props: { |
更詳細的類型檢查
使用對象語法來提供更詳細的配置,例如,指定 prop 是否是必需的,並提供默認值:
1 | props: { |
多種類型檢查
有時候,一個 prop 可以接受多種不同類型的值,這時可以使用數組來指定多種類型:
1 | props: { |
Boolean Casting
當 props 為 Boolean 時,會有不同的運行方式如:
1 | export default { |
在畫面上
1 | <!-- equivalent of passing :disabled="true" --> |