computed, watch, el‐form rules 的執行順序 - daniel-qa/Vue GitHub Wiki
computed, watch, el-form rules 的執行順序
簡短結論(先給你快速吸收版)
computed > watch > el-form rules
也就是說:computed 的變動會觸發 watch,watch 可能改變欄位或觸發 validate,而最終才由 el-form 的 rules 驗證。
- 🧠 深入解析(更懂原理,寫碼不卡關)
1. computed 是同步計算屬性
它會根據其依賴值即時計算、更新,優先於 watch 和 rules。
在欄位變動時,會「馬上」重新計算(但只有被使用時才會觸發執行,這是 lazy 的特性)。
2. watch 是監控變數的變化
在底層響應式系統偵測到變化後非同步執行 callback。
如果你在 watch 中執行 formRef.validate(),那就會主動觸發 rules 驗證。
它會排在微任務隊列中,所以會在 DOM 更新之後才執行。
3. el-form 的 rules 是手動或被動觸發的驗證規則
只有在:
你觸發 validate() 方法,
或者 input 觸發 change/blur 時,
才會執行驗證。
所以 rules 本身「不會主動發生」,而是被某些事件觸發。