VUE3基礎學習之click事件詳解

1. 概述

老話說的好:努力幫別人解決難題,你的難題也就不難解決瞭。

言歸正傳,今天我們來聊聊 VUE3 的 click 事件的相關知識。

2. click 事件

2.1 實現數字遞減

<body>
    <div id="myDiv"></div>
</body>
<script>
    const app = Vue.createApp({     // 創建一個vue應用實例
        data() {
            return {
                num : 5
            }
        },
        methods : {
            decr() {
                if(this.num <= 0) {
                    alert("庫存為0,無法購買")
                    return;
                }
                this.num-- ;
            },
        },
        template : `
            <div>
                商品庫存剩餘 {{num}} 件
                <button @click="decr">購買</button><br>
            </div>  
        `
    });

    const vm = app.mount('#myDiv');  // 綁定id為 myDiv 的元素

該例中,每點一次按鈕,商品庫存都會減 1

2.2 事件方法中獲取 event 對象

decr(event) {
                console.info(event);
                console.info(event.target);
                if(this.num <= 0) {
                    alert("庫存為0,無法購買")
                    return;
                }
                this.num-- ;
            },

方法中可以獲取 event 對象,從中可以獲取一些事件信息

2.3 事件方法中增加參數

methods : {
            decr(n) {
                if(this.num < 2) {
                    alert("庫存不足,無法購買")
                    return;
                }
                this.num -= n;
            },
        },
        template : `
            <div>
                商品庫存剩餘 {{num}} 件
                <button @click="decr(2)">購買2件</button><br>
            </div>  
        `

事件方法 decr 中增加瞭參數 n,依據參數進行計算

2.4 有參事件方法中獲取 event 對象

methods : {
            decr(n, event) {
                console.info(event);
                console.info(event.target);
                if(this.num < 2) {
                    alert("庫存不足,無法購買")
                    return;
                }
                this.num -= n;
            },
        },
        template : `
            <div>
                商品庫存剩餘 {{num}} 件
                <button @click="decr(2, $event)">購買2件</button><br>
            </div>  
        `

2.5 點擊按鈕執行多個方法

methods : {
            f1() {
                alert("f1")
            },
            f2() {
                alert("f2")
            },
        },
        template : `
            <div>
                <button @click="f1(), f2()">執行多個方法</button><br>
            </div>  
        `

2.6 事件冒泡

methods : {
            clickDiv() {
                alert("div");
            },
            clickButton() {
                alert("button");
            }
        },
        template : `
            <div @click="clickDiv">
                <button @click="clickButton">事件冒泡</button><br>
            </div>  
        `

點擊按鈕,會先執行 button 上的 click 事件,然後執行 div 上的 click 事件

2.7 阻止冒泡

        template : `
            <div @click="clickDiv">
                <button @click.stop="clickButton">阻止事件冒泡</button><br>
            </div>  
        `

如果我們希望點擊按鈕時隻執行按鈕的事件,可以在按鈕上使用 @click.stop 的寫法阻止事件冒泡。

2.8 事件捕獲

        template : `
            <div @click.capture="clickDiv">
                <button @click="clickButton">事件捕獲</button><br>
            </div>  
        `

如果希望先執行 div 事件,再執行 button 的事件,可以在 div 上使用 @click.capture 的寫法,讓事件由外向內執行

2.9 事件隻執行一次

        template : `
            <div @click.once="clickDiv">
                <button @click="clickButton">事件</button><br>
            </div>  
        `

在 div 上使用 @click.once ,這樣 div 的事件,隻會被執行一次

3. 綜述

今天聊瞭一下 VUE3 的 click 事件,希望可以對大傢的工作有所幫助

到此這篇關於VUE3基礎學習之click事件的文章就介紹到這瞭,更多相關VUE3之click事件內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: