2025-04-06-為什麼不在 MyBanner.vue 裡直接寫死 class?為什麼要透過 props(像 type)去控制?
2025-04-06-為什麼不在 MyBanner.vue 裡直接寫死 class?為什麼要透過 props(像 type)去控制?
這個問題問得非常好 👍
「為什麼不在 MyBanner.vue
裡直接寫死 class?為什麼要透過 props
(像 type
)去控制?」
這跟 元件設計的彈性 有關。
1. 如果直接寫 class
例如你這樣做:
1 | <div class="my-banner error"> |
- 優點:簡單,馬上就有紅色的錯誤樣式。
- 缺點:這個元件只能用錯誤紅色樣式,想要變成 success/info 就要 複製一個新的元件 或去修改原始檔案。
- 等於「死板的 UI」,重複性很高。
2. 如果用 props + 動態 class
1 | <template> |
使用的時候:
1 | <MyBanner type="error">❌ 刪除失敗</MyBanner> |
- 優點:一個元件就能處理多種情境。
- 更符合 元件的設計精神:可重用、可組合。
- 如果將來要新增
type="neutral"
,只要加一行 CSS 即可,不需要改 Vue 模板。
3. 總結
- 直接用 class → 簡單,但死板,不好擴充。
- 用 props + class → 稍微多一點程式,但能讓元件在不同地方重複使用,維護性強。