Lala Code

Lala 的前端大補帖,歡迎一起鑽研前端技術😊

0%

組件資料傳遞 emit-子層傳參數到父層

組件資料傳遞 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); // emit(自定義變數, 要使用的參數)
});
return {
num,
};
},
};
1
<h1>{{num}}</h1>

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,
};
},
};
1
<h1>{{num}}</h1>

以上是我的學習筆記,希望也有幫助到你哦 😀



🚀實體工作坊分享

玩轉 Web頁面的前端技術(HTML/CSS/JS) 一日體驗課

最近時賦學苑開了實體體驗課,即使你對程式碼沒有概念也能上手!Lala 會帶你一起做出一個個人品牌形象網站,帶你快速了解前端的開發流程,快跟我們一起玩轉 Web 吧!



🚀線上課程分享

線上課程可以加速學習的時間,省去了不少看文件的時間XD,以下是我推薦的一些課程
想學習更多關於前後端的線上課程,可以參考看看。

Hahow

Hahow 有各式各樣類型的課程,而且是無限次數觀看,對學生或上班族而言,不用擔心被時間綁住



六角學院

如果你是初學者,非常推薦六角學院哦!
剛開始轉職也是上了六角的課,非常的淺顯易懂,最重要的是,隨時還有線上的助教幫你解決問題!


Udemy

Udemy 裡的課程非常的多,品質普遍不錯,且價格都滿實惠的,CP值很高!
也是很多工程師推薦的線上課程網站。
❤️