大家好,
我的環境是vite、vue3。
下面是我的code :
<script setup>
const myId = ref('')
const myName = ref('')
const clickBtn = function(id = myId.value,name = myName.value){
console.log('id',id,'name',name);
}
</script>
<template>
<button @click="clickBtn"> 按我</button>
</template>
按下button
後,原本預計看到的結果會是'id','','name',''
,
但是返回的卻是'id',PointerEvent {isTrusted: true, pointerId: 2, width: 1, height: 1, pressure: 0, …} ,'name',''
在不帶任何變數的情況下,第一個變數變成 PointerEvent
了。
我試著用stop
,結果也是沒用。
<button @click.stop="clickBtn"> 按我</button>
目前改成這樣是可以解決問題,<button @click="clickBtn(myId)">
。
但有什麼辦法,可以在維持clickBtn
不帶變數的情況下,<button @click="clickBtn">
,取消程式自動帶入PointerEvent變數呢?
即使是處理 dom 原生的 event listener,讓他自己呼叫也一定會傳 event 進來。最方便的做法就是給你的 listener 多個規則
const clickBtn = (event, id = myId.value, name = myName.value) => {
}
養成習慣以後看到第一個參數是 event 的函數就知道用途也算另一個好處。