Sådan håndterer du begivenheder i Vue

Sådan håndterer du begivenheder i Vue
Læsere som dig hjælper med at støtte MUO. Når du foretager et køb ved hjælp af links på vores websted, kan vi optjene en affiliate-kommission. Læs mere.

At lytte til brugerbegivenheder er en integreret del af enhver responsiv webapp, og Vue-apps er ingen undtagelse. Vue er bygget med en enkel og effektiv måde at håndtere begivenheder på med sit v-on-direktiv.





Hvad er begivenhedsbinding i Vue?

Hændelsesbinding er en Vue.js-funktion, der giver dig mulighed for at knytte en begivenhedslytter til en Document Object Model (DOM) element. Når en hændelse opstår, udløser hændelseslytteren en handling eller et svar i din Vue-app.





MAKEUSE AF DAGENS VIDEO RUL FOR AT FORTSÆTTE MED INDHOLD

Du kan opnå begivenhedsbinding i Vue med v-på direktiv. Dette direktiv giver din app mulighed for at lytte efter brugerbegivenheder såsom klik-, enter- eller taste-hændelser.





At knytte en begivenhedslytter til et element ved hjælp af v-på , tilføj hændelsesnavnet som en parameter til direktivet:

 <html> 
<head>
  <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
</head>
<body>
  <div id="app">
    <button v-on:click="counter++">Click me</button>
    <p>{{ counter}}</p>
  </div>
  <script>
  const app = Vue.createApp({
    data() {
      return {
        text: 'Vue is awesome!',
        counter: 0
      }
    }
  })

  app.mount('#app')
  </script>
</body>
</html>

Kodeblokken ovenfor viser et eksempel på en Vue-app, der lytter til en klik begivenhed. Kodeblokken bruger en knap at øge tæller værdi i dataegenskaben for Vue-forekomsten med én.



Ovenstående kodeblok binder JavaScript-udtrykket tæller++ til knappens klik arrangement med v-på direktiv. Vue bruger @ karakter som en stenografi i stedet for v-på direktiv pga v-på s hyppige brug:

 <button @click="counter++">Click me</button> 

Begivenhedsbinding i Vue er ikke begrænset til klikbegivenheder. Vue håndterer andre begivenheder, såsom tastetryk begivenheder, mouseover begivenheder og mere.





For at binde nogen af ​​disse begivenheder til v-på direktiv, udskift klik begivenhed med navnet på den ønskede begivenhed:

hvordan man låser harddisk op for mac
 <button @keydown.enter="counter++">Click me</button> 

Koden ovenfor opretter en begivenhedslytter på knap der lytter efter tasten ned begivenhed. Når en tast trykkes ned, mens knappen har fokus, evaluerer Vue tæller++ udtryk.





Sammenkædning af begivenheder med metoder i Vue

I de fleste Vue-apps kan du håndtere mere kompleks logik baseret på specifikke hændelser, der opstår. Hændelser og metoder arbejder hånd i hånd for at udføre apphandlinger baseret på en hændelse.

Metoderne egner sig i Vues Options Object rummer vigtige funktioner, som din Vue-app har brug for for øget reaktivitet. Med methods-egenskaben i Vue kan du håndtere kompleks logik baseret på hændelser.

Her er et eksempel på en Vue-app, der viser hændelser, der håndteres af methods-egenskaben:

 <html> 
<head>
  <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
</head>
<body>
  <div id="app">
    <button @click="increment">Add 1</button>
    

    <button @click="reduce">reduce 1</button>
    <p>{{ counter }}</p>
  </div>
  <script>
    const app = Vue.createApp({
      data() {
        return {
          text: 'Vue is awesome!',
          counter: 0
        }
      },
      methods: {
        increment(){
          this.counter = this.counter + 1
        },
        reduce() {
          this.counter = this.counter - 1
        }
      }
    })
    app.mount('#app')
  </script>
</body>
</html>

Vue-appen ovenfor viser, hvordan man forbinder begivenheder med metoder. Appen har to knapper, som brugere kan klikke på for at øge eller reducere tællerværdien i dataegenskaben.

Appen opnår dette med @klik direktiv. Det @klik direktiv peger på funktionerne i methods-egenskaben for at manipulere tællerværdien.

Når du linker et argument til klikhændelsen, kan du tilpasse stigningen og reducere metoderne for at tilføje eller reducere tællerværdien baseret på det argument, du sender til metoden.

Ligesom:

 <body> 
  <div id="app">
    <button @click="increment(5)">Add 5</button>
    

    <button @click="reduce(3)">reduce 3</button>
    <p>{{ counter }}</p>
  </div>

  <script>
    const app = Vue.createApp({
      data() {
        return {
          text: 'Vue is awesome!',
          counter: 0
        }
      },
      methods: {
        increment(num){
          this.counter = this.counter + num
        },
        reduce(num) {
          this.counter = this.counter - num
        }
      }
    })

    app.mount('#app')
  </script>
</body>

Denne kodeblok udvider den tidligere Vue-app for at tillade videregivelse af argumenter til de metoder, der er knyttet til klikhændelseslytteren på knappen.

Metoderne øger og reducerer i Vue-forekomsten tager et argument num for at øge eller reducere tælleregenskaben.

Dette eksempel viser, hvordan du kan arbejde med argumenter, når du forbinder metoder med hændelser i Vue. Sammenkædningsmetoder med begivenheder kan hjælpe med at gøre Vue-apps mere interaktive.

Udforskning af forebyggelses- og stopmodifikatorerne i Vue

Hændelsesmodifikatorer i Vue giver dig mulighed for at skabe bedre begivenhedslyttere, der imødekommer de specifikke behov i din applikation. For at bruge disse hændelsesmodifikatorer kæder du modifikatorerne til begivenheder i Vue.

For eksempel:

 <form @submit.prevent="handleSubmit"> 
  <input type="text" v-model="text">
  <button type="submit">Submit</button>
</form>

Kodeblokken ovenfor kæder forhindre modifikator til indsendelsesbegivenheden. Det forhindre modifier bruges ofte, når du arbejder med formularer i Vue.

Det forhindre modifikatorens formål er at forhindre standardadfærden ved formularindsendelse, som er at genindlæse siden. Ved brug af forhindre , kan Vue fortsætte sine processer, mens den handleSend metode tager sig af formularindsendelsen.

Et andet eksempel på en meget nyttig modifikator er hold op hændelsesmodifikator. Det hold op hændelsesmodifikator forhindrer en hændelse i at forplante sig længere op i DOM-træet.

Normalt bobler et HTML-underelements hændelse op gennem DOM-træet og aktiverer eventuelle hændelseslyttere, der er knyttet til overordnede elementer. Du kan forhindre dette hændelsesudbredelse med hold op modifikator og forhindre begivenheden i at udløse flere begivenhedslyttere.

For at forstå, hvordan hold op modifikator stopper udbredelsen af ​​hændelser længere oppe i et DOM-træ, overvej kodeblokken nedenfor:

 <body> 
    <div id="app">
        <div @click="outerClick" class="outer">
            <div @click.stop="innerClick" class="inner">
              <button @click="buttonClick" class="button">Click me</button>
            </div>
        </div>
    </div>
    <script>
    const app = Vue.createApp({
        methods: {
            outerClick() {
                console.log('Outer click')
            },
            innerClick() {
                console.log('Inner click')
            },
            buttonClick() {
                console.log('Button click')
            }
        }
    });

    app.mount("#app");
    </script>
 </body>

Kodeblokken ovenfor har tre hændelseslyttere knyttet til tre forskellige elementer. Det knap element er inde i div med indre klasse, mens div med indre klasse er inde i div med ydre klasse.

Hvert af de tre elementer lytter efter en klik hændelse og logfiler til konsollen, klikkede på navnet på HTML-elementet. Nedenfor er yderligere klasse CSS-styling for at gøre ovenstående kodeblok lettere at forstå:

 <head> 
    <style>
    .outer {
      padding: 20px;
      background-color: black;
    }
    .inner {
      padding: 20px;
      background-color: gray;
    }
    button {
      padding: 10px;
      background-color: white;
      border: 2px solid black;
      font-size: 16px;
      font-weight: bold;
      cursor: pointer;
    }
    </style>
</head>

Når du kører programmet, vil den oprettede Vue-app se sådan ud:

  Vue app med en sort og hvid klik på mig-knap

Bemærk, at når du klikker på knappen, kalder programmet den knapKlik metode og logger en besked til konsollen. Programmet kalder også indreKlik metode.

tilslut trådløse hovedtelefoner til xbox one

Programmet kalder dog ikke ydreKlik metode, fordi kodeblokken tilføjede en hold op modifikator til indreKlik begivenheds lytter. Dette forhindrer hændelsen i at forplante sig længere oppe i DOM-træet.

Uden hold op modifikator, vil programmet kalde knapKlik metode, når du klikker på knappen, og hændelsen fortsætter med at forplante sig op i træet og nå indreKlik metode og derefter ydreKlik metode.

Håndtering af hændelser i webapps

Du har lært, hvordan du bruger hændelsesbinding i Vue til at knytte hændelseslyttere til elementer, og hvordan du kalder metoder, når hændelser opstår. Du har også forstået, hvordan du bruger hændelsesmodifikatorer til at tilpasse hændelsesadfærd.

Webapps er afhængige af en form for brugerbegivenheder for at udføre funktioner. JavaScript kommer indbygget med en masse metoder til at fange og håndtere en række af disse begivenheder. Disse begivenheder hjælper med at bygge interaktive apps.