組件資料傳遞 emit (子傳父)
使用 emit 往上傳遞資料
App.vue
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| import EmitTest from "@/components/EmitTest.vue"; export default { components: { EmitTest, }, setup() { const clickFn = (num) => { console.log(num); }; return { clickFn, }; }, };
|
1
| <EmitTest @callBack="clickFn" /> // @在emit定義的變數="父層Fn"
|
EmitTest.vue
1 2 3 4 5 6 7 8 9 10 11 12
| import { onMounted, ref } from "vue"; export default { setup(props, context) { const num = ref(0); onMounted(() => { context.emit("callBack", num); }); return { num, }; }, };
|
setup 接收兩個參數,前面為 props,第二個 context
使用 emit 也可以直接解構出來
1 2 3 4 5 6 7 8 9
| setup(props, {emit}){ const num = ref(0); onMounted(()=>{ emit("callBack", num); }) return { num } }
|
emits 的使用
聲明有使用到的 emit,可以寫成 Array
emit 也可以寫成 object 來做驗證的動作
如驗證未通過,console 會跳出 warning 的提示來告訴開發者
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| export default { emits: { callBack: (num) => { return num.value === 0; }, }, setup(props, { emit }) { const num = ref(1); onMounted(() => { emit("callBack", num); }); return { num, }; }, };
|
計數器範例
App.vue
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| import EmitTest from "@/components/EmitTest.vue"; export default { components: { EmitTest, }, setup() { const handTimeOut = (num) => { console.log("time is over", num.value); }; return { handTimeOut, }; }, };
|
1
| <EmitTest @TimeOut="handTimeOut" />
|
EmitTest.vue
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| import { onMounted, ref } from "vue"; export default { emits: { TimeOut: (num) => { if (num.value === 0) { return true; } else { return false; } }, }, setup(props, { emit }) { const num = ref(5); let timer = null; onMounted(() => { timer = setInterval(() => { num.value--; if (num.value === 0) { clearInterval(timer); emit("TimeOut", num); } }, 1000); }); return { num, }; }, };
|
以上是我的學習筆記,希望也有幫助到你哦 😀
🚀實體工作坊分享
最近時賦學苑開了實體體驗課,即使你對程式碼沒有概念也能上手!Lala 會帶你一起做出一個個人品牌形象網站,帶你快速了解前端的開發流程,快跟我們一起玩轉 Web 吧!
🚀線上課程分享
線上課程可以加速學習的時間,省去了不少看文件的時間XD,以下是我推薦的一些課程
想學習更多關於前後端的線上課程,可以參考看看。
Hahow 有各式各樣類型的課程,而且是無限次數觀看,對學生或上班族而言,不用擔心被時間綁住
如果你是初學者,非常推薦六角學院哦!
剛開始轉職也是上了六角的課,非常的淺顯易懂,最重要的是,隨時還有線上的助教幫你解決問題!
Udemy 裡的課程非常的多,品質普遍不錯,且價格都滿實惠的,CP值很高!
也是很多工程師推薦的線上課程網站。