Web_Design 板


LINE

如題,寫Vue時子元件要操作父元件的function會使用emit的方式 但由於過去都是在寫React,所以在練習Vue的時候自然而然的 就把父元件的function當作prop傳送到子元件中 子元件再直接拿prop的參數來當作function執行 一切也都沒什麼問題 於是心中就有疑問了,既然如此 我把父元件的function當作prop傳下去執行 跟使用emit的方式,有什麼差異嗎? Example: (父元件) <Child :handleClick="handleClick" /> (子元件) <button @click="handleClick()">click</button> --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 115.43.135.34 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Web_Design/M.1679750183.A.BC5.html
1F:→ ck574b027: 維護上的差別。自己也會宣告函數,兩種都 @event="f()" 03/25 23:04
2F:→ ck574b027: 這樣呼叫,你要怎麼一眼看出他的來源 03/25 23:05
3F:→ ssccg: 差在跟Vue.js的convention不同,別人可能不習慣這種用法 03/25 23:11
4F:→ ssccg: Vue.js的官方建議就是往下用props,往上用event 03/25 23:17
5F:→ ssccg: 另外可能有比較方便的可能是event有內建一些modifier 03/25 23:21
6F:→ ssccg: 至於一樓說的那都是命名問題吧,emit跟props一樣自訂命名, 03/25 23:27
7F:推 shter: 傳進去跟不傳進去應用的場合不同 03/25 23:27
8F:→ ssccg: 一樣設自訂命名的function,用typescript一樣能宣告type 03/25 23:30
9F:→ ssccg: 反而是emit還能寫對handler function傳入值的validation 03/25 23:31
10F:→ ssccg: (雖然emit不宣告也能直接$emit,props一定要宣告,讓有些人 03/25 23:32
11F:→ ssccg: 誤會props比較嚴謹) 03/25 23:32
12F:推 shter: 如果父子組件都是你自己寫的這樣搞當然沒關係 03/25 23:44
13F:→ shter: 但很多時候會有共用組件、組件庫,跨專案在使用單獨打包的 03/25 23:44
14F:→ shter: 這樣設計 :傳參數 @收事件 的作法比較單純,就是接口的型別 03/25 23:45
15F:→ shter: 掌握好就可以了,因為對應用層來說都是收事件參數而已 03/25 23:46
16F:→ shter: 如果要傳 Function 進去那使用方式說明上就會變得複雜 03/25 23:47
17F:→ shter: Vue 把每一區都設計的很單純,但也沒阻止你複雜的使用它 03/25 23:49
18F:→ ssccg: 還有一點是直接呼叫props傳進來的function跟用$emit不同, 03/26 00:41
19F:→ ssccg: 不會經過Vue.js的一些檢查,例如子元件unmounted後$emit就 03/26 00:42
20F:→ ssccg: 會被忽略,而function如果丟去非同步執行的callback那可能 03/26 00:44
21F:→ ssccg: 連父元件都unmounted了照樣執行下去 03/26 00:44
22F:→ ck574b027: 一樓的意思是 "$emit()" 跟 "f()" 可以幫助分辨handler 03/26 23:52
23F:→ ck574b027: 來源,用props就跟local函數搞混了 03/26 23:53
24F:推 ck574b027: 19F差別也太重要了吧,根本是會引起靈異事件的程度 03/27 00:09







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP