Шаг 1. Добавление блока script

Продолжаем работу с компонентом DemoCounter.vue. Теперь необходимо реализовать логику его работы.

Для этого добавим блок <script>:

<script setup>

</script>

Шаг 2. Добавление логики работы счётчика

Для хранения значения воспользуемся реактивной переменной, созданной с помощью ref.

<script setup>
import { ref } from 'vue'

const count = ref(0)
</script>

Теперь добавим методы для изменения значения count.

<script setup>
import { ref } from 'vue'

const count = ref(0)

/* Метод уменьшения значения */
const decrement = () => {
  count.value = count.value - 1
}

/* Метод увеличения значения */
const increment = () => {
  count.value = count.value + 1
}
</script>

Шаг 3. Связывание логики с шаблоном

Осталось связать созданные методы с шаблоном: при нажатии на кнопки + и - должны вызываться increment и decrement соответственно. Для этого укажем их как обработчики события @click.

<template>
    <div class="counter">
        <button @click="decrement"> - </button>

        <span> Current value: 0 </span>

        <button @click="increment"> + </button>
    </div>
</template>

Для отображения текущего значения переменной count воспользуемся Mustache-синтаксисом.

<template>
    <div class="counter">
        <button @click="decrement"> - </button>

        <span> Current value: {{ count }} </span>

        <button @click="increment"> + </button>
    </div>
</template>

Шаг 4. Окончательный вид компонента счётчика

Компонент готов и должен выглядеть следующим образом:

<template>
    <div class="counter">
        <button @click="decrement"> - </button>

        <span> Current value: {{ count }} </span>

        <button @click="increment"> + </button>
    </div>
</template>

<script setup>
import { ref } from 'vue'

const count = ref(0)

const decrement = () => {
  count.value = count.value - 1
}

const increment = () => {
  count.value = count.value + 1
}
</script>

Запустите проект командой npm run dev в директории demo и проверьте результат.