在Vue應(yīng)用程序中,$event是一個(gè)令人驚奇的屬性。正如許多開發(fā)人員所知道的,該屬性代表調(diào)用該方法的事件。而且,它允許使用者對(duì)以下事情進(jìn)行一定程度的控制:
<button v-on:click.stop="myMethod($event)">Submit</button>
在這個(gè)簡(jiǎn)單的例子中,您可以看到當(dāng)按鈕被點(diǎn)擊時(shí),我們?cè)趍yMethod中接收$event參數(shù)。該參數(shù)給了我們一些控制這個(gè)事件的能力。然而,有時(shí)候您會(huì)發(fā)現(xiàn)$event對(duì)您的應(yīng)用程序并沒有什么用。它與您需要處理的事件沒有關(guān)系。在這些情況下,使用$event會(huì)使您的代碼變得混亂。
讓我們看一個(gè)例子:
methods: {
submitForm(event) {
const data = new FormData(event.target)
axios.post('/api/form', data)
.then(response =>{
this.submitting = false
})
.catch(error =>{
this.submitting = false
})
}
}
在這個(gè)例子中,我們需要從事件中提取數(shù)據(jù)。 然而,我們不需要整個(gè)事件對(duì)象。 相反,我們只需要從事件對(duì)象中獲取目標(biāo)。 在這種情況下,使用$event是不必要的。
相反,您應(yīng)該在事件處理程序中使用正常的參數(shù):
methods: {
submitForm(target) {
const data = new FormData(target)
axios.post('/api/form', data)
.then(response =>{
this.submitting = false
})
.catch(error =>{
this.submitting = false
})
}
}
這種類型的代碼更易于理解,因?yàn)槟槐靥幚聿槐匾氖录?duì)象。 在您的應(yīng)用程序中對(duì)這些屬性保持警惕,并仔細(xì)考慮何時(shí)使用它們。