推 ck574b027: 因為它只是macro。如果只有template會用到,最好寫成 04/16 16:32
→ ck574b027: defineProps(['name']) 04/16 16:32
喔不好意思,原本想說簡化一下寫法來描述問題,所以寫不完整
沒說明清楚我是使用typescript
原始寫法是這樣的:
interface Props {
name: string;
}
//寫法1
const props = defineProps<Props>();
const { name } = props;
//寫法2
const { name } = defineProps<Props>();
一直以為這兩種寫法是相等的
但對於響應式的結果是不同的
寫法1無法響應
寫法2可以響應
→ ssccg: 是你奇怪吧為什麼prop的欄位不寫在defineProps 04/16 16:45
→ ssccg: 你另外寫一個 { name } 是想幹麻 04/16 16:48
※ 編輯: heavenbetula (219.68.234.131 臺灣), 04/16/2024 17:12:34
→ cloki: 而且你寫法1那種本來就大概需要watch/computed才會響應吧 04/16 20:03
→ ck574b027: 可以看看產出的js有何差別 04/16 21:38
痾...後來發現是vue版本的處理,在3.4版本後上述寫法2可以響應,但測試3.2版本
上述寫法2是不可以響應的
※ 編輯: heavenbetula (219.68.234.131 臺灣), 04/17/2024 02:06:39
推 crazwade: defineProps<{name: string}>(); 不用解構可以直接用na 05/05 11:46
→ crazwade: me吧 05/05 11:46