0Pricing
Vue Academy · Урок

Импорт и использование компонуемых функций в script setup

Импорт компонуемых функций, использование сторонних компонуемых функций VueUse, организация импортов

«Импорт и использование компонуемых функций в script setup» — бесплатный урок Vue Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Vue Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Vue Academy содержит 4 уроков всего.

Компонуемые функции и настройка скрипта

Компонуемые функции — это функции, объединяющие реактивную логику для повторного использования. В <script setup> пользоваться ими так же просто, как импортировать и вызвать их на верхнем уровне.

Импорт на верхнем уровне

Всегда вызывайте компонуемую функцию на верхнем уровне <script setup> — не внутри условия, цикла или вложенной функции. Это гарантирует, что Vue правильно зарегистрирует её реактивность и хуки жизненного цикла.

<script setup>
import { useCounter } from './useCounter'
const { count, increment } = useCounter()
</script>

Почему важен верхний уровень

Компонуемые функции часто регистрируют хуки жизненного цикла, например onMounted, или настраивают наблюдателей. Они должны выполняться во время настройки компонента, а это происходит только при синхронном вызове компонуемой функции на верхнем уровне.

Извлекайте только нужное

Компонуемая функция возвращает объект с реактивными значениями и функциями. Извлекайте только используемые компонентом элементы; переименовывайте их, чтобы избежать конфликтов при повторном вызове одной и той же компонуемой функции.

<script setup>
import { useMouse } from './useMouse'
const { x: mouseX, y: mouseY } = useMouse()
</script>

Знакомство с VueUse

VueUse — популярная библиотека готовых компонуемых функций. Вместо того чтобы самостоятельно писать распространённую логику, импортируйте проверенную компонуемую функцию. Установите библиотеку один раз и импортируйте нужные элементы.

<script setup>
import { useLocalStorage } from '@vueuse/core'
const name = useLocalStorage('name', 'Alice')
</script>

useLocalStorage в действии

useLocalStorage возвращает ref, синхронизированный с localStorage. Измените ref — и хранилище браузера обновится; перезагрузите страницу — и значение сохранится.

<template>
  <input v-model="name" />
  <p>Saved: {{ name }}</p>
</template>

useMouse для реактивных координат

useMouse отслеживает положение указателя с помощью реактивных refs. Он сам добавляет и удаляет обработчик события, поэтому Вам не нужно вручную управлять очисткой.

<script setup>
import { useMouse } from '@vueuse/core'
const { x, y } = useMouse()
</script>

<template>
  <p>{{ x }}, {{ y }}</p>
</template>

Компонуемые функции объединяются

Компонуемая функция может вызывать другие компонуемые функции. Такое построение лежит в основе API композиции: создавайте небольшие части и объединяйте их в более крупные возможности.

import { useMouse } from '@vueuse/core'

export function useMouseDistance() {
  const { x, y } = useMouse()
  const distance = computed(() => Math.hypot(x.value, y.value))
  return { distance }
}

Ожидание на верхнем уровне

<script setup> поддерживает прямое использование await на верхнем уровне. Компонент становится асинхронным, а платформа может приостановить отображение до разрешения промиса.

<script setup>
const res = await fetch('/api/user')
const user = await res.json()
</script>

Приостановка при асинхронной настройке

Компонент, использующий await на верхнем уровне, должен быть обёрнут родителем в границу <Suspense>. Suspense показывает запасное содержимое, пока асинхронная настройка не завершится.

<template>
  <Suspense>
    <AsyncUser />
    <template #fallback>Loading...</template>
  </Suspense>
</template>

Рекомендации

  • Называйте компонуемые функции с префиксом use.
  • Вызывайте их только на верхнем уровне.
  • Возвращайте ссылки (или reactive, обёрнутый в toRefs).
  • Прежде чем писать собственную логику, отдавайте предпочтение VueUse для распространённых задач.

Быстрая проверка

Проверьте, насколько хорошо Вы поняли компонуемые функции.

Итоги

Вы научились использовать компонуемые функции:

  • Импортируйте и вызывайте их на верхнем уровне <script setup>.
  • Извлекайте (и переименовывайте) нужные элементы.
  • VueUse предлагает готовые компонуемые функции, такие как useLocalStorage и useMouse.
  • await на верхнем уровне делает настройку асинхронной и используется вместе с <Suspense>.

Часто задаваемые вопросы

Урок «Импорт и использование компонуемых функций в script setup» бесплатный?

Да — полный текст урока «Импорт и использование компонуемых функций в script setup» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Vue Academy, подпишись на CoddyKit PRO. Курс Vue Academy содержит 4 уроков всего.

Чему я научусь в уроке «Импорт и использование компонуемых функций в script setup»?

Импорт компонуемых функций, использование сторонних компонуемых функций VueUse, организация импортов Ты практикуешь Vue Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Vue Academy?

Предыдущий опыт не требуется. Vue Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Импорт и использование компонуемых функций в script setup»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Vue Academy?

Да. Каждый урок Vue Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Введение в script setup
  2. defineProps и defineEmits
  3. defineExpose и useAttrs
  4. Импорт и использование компонуемых функций в script setup
← Назад к Vue Academy