Vue.js - погружение в методы

Vye.js - погружение в методы

В Vue 2.0, Vue определяет методы компонентов внутри объекта methods как часть экземпляра Vue. Вы описываете каждый компонентный метод как обычную функция JavaScript. Метод Vue привязан к вашему компоненту и может быть запущен из любого места внутри компонента, которому он принадлежит. Он также имеет доступ к this, который указывает на экземпляр компонента:

<script>
  export default {
    methods: {
      myMethod() { console.log('my first method'); }
    }
  }
</script>

Начиная с Vue 3.0, с помощью <script setup>, как и в случае с локальными данными, вы можете
определить метод как обычную функцию, и он будет работать так же, как и в подходе vue 2.

Следовательно, мы можем переписать предыдущий код так:

<script setup>
  const myMethod = () => { console.log('my first method'); }
</script>

Затем вы можете привязать методы к HTML-событиям элемента в разделе template. При привязке событий к элементам HTML
в Vue вы должны использовать символ @. Например, v-on:click эквивалентен
на @click, как показано в следующем блоке кода:

<template>
  <button id="click-me" v-on:click="myMethod">Click me</button>
  <button id="click-me" @click="myMethod">Click me shorter</button>
</template>

Клик по обеим кнопкам запускает один и тот же метод myMethod() и выдает один и тот же результат.

Давайте создадим компонент с некоторыми методами.

 

Упражнение - создание методов

В этом упражнении мы собираемся создать компонент, использующий методы Vue. Думайте о методах как о функциях в JavaScript, так как они ведут себя очень похоже.

Создайте и импортируйте пустой компонент, как это показано в упражнении.

Создайте скелет компонента, используя секции - <template> <script> и <style>.

Код, внутри секции script, будет таким:

<script setup>
  const triggerAlert = (index) => {
    alert(`${index} has been clicked`)
  }
</script>

В разделе template настройте цикл v-for для HTML списка и добавьте элемент кнопки внутри элемента списка. Установите цикл на повторение 5 раз и отобразите индекс
в качестве метки каждой кнопки:

<template>
  <div>
    <h1>Triggering Vue Methods</h1>
    <ul>
      <li v-for="index in 5":key="index">
        <button>Trigger {{index}}</button>
      </li>
    </ul>
  </div>
</template>

Добавьте директиву @click, ссылающуюся на метод triggerAlert, и передайте значение индекса в качестве аргумента:

<template>
  <div>
    <h1>Triggering Vue Methods</h1>
    <ul>
      <li v-for="index in 5" :key="index">
        <button @click="triggerAlert(index)">Trigger {{ index }}</a>
      </li>
    </ul>
  </div>
</template>

Добавите стилей, в секцию style:

<style>
button {
  margin: 10px;
}
</style>

На вашей странице должен появиться список кнопок, при нажатии на которые появляется alert с сообщением, которое
содержит номер кнопки, которую вы нажали.

Хотя вы и можете добавлять прослушку событий к любому HTML-элементу, мы рекомендуем применять его к
нативным интерактивным элементам HTML, такие как ссылки, input или button.

В следующей статье мы рассмотрим, как возвращать данные с помощью методов Vue внутри компонента Vue.