Для чего был создан ref во Vue
С появлением Vue 3 и, соответственно, Composition API у нас появилась возможность использовать в нашем компоненте специальную функцию, которая называется ref.
Импортируется это следующим образом:
import { ref } from 'vue';Давайте разберемся для чего это нужно.
Но, для начала хотел дать ссылку на свой полный курс по Vue, где в формате видео, можно подробнее познакомиться со всеми особенностями Composition API.
https://webkyrs.info/category/composition-api-komponenty-vue-js
Итак, Composition Api позволяет нам организовать модульную структуру построения компонентов. Мы выбираем и импортируем в компонент только самые необходимые части. Одной из таких частей является функция ref.
Основная задача этой функции - сделать переменную на уровне данных реактивной. Т.е. изменяется значение переменной в логике (раздел script компонента) и это перерисовывается в template.
Простой пример, как мы можем использовать ref в компоненте
import { ref } from 'vue';
export default {
setup() {
const count = ref(0);
function increment() {
count.value++;
}
return {
count,
increment
};
}
};Здесь count — это реактивная переменная.
Обратите внимание, что после того, как мы обернули значение в ref, получить значение этой переменной мы можем с помощью конструкции count.value.
ref оборачивает значение в специальный объект с единственным свойством value.
Vue будет автоматически отслеживать и обновлять DOM, если значение count изменится.
Если бы мы писали на Options API, то этот кусок кода мог выглядеть следующим образом:
export default {
data() {
return {
count: 0
};
},
methods: {
increment() {
this.count++;
}
}
};Оборачивания значения переменной в ref - это аналог того, как если бы мы разместили значение этой переменной в data в Options API.
В ref можно размещать не только строки или числа, но и любые типы данных, например, массивы или объекты:
const items = ref(['Item 1', 'Item 2', 'Item 3']); const itemsRef = ref([]);
ref для получения доступа к элементам DOM разметки
Обратите внимание, что с помощью ref можно также получать доступ к элементам DOM разметки. Это полезно, если вам нужно взаимодействовать с DOM напрямую. Например:
<template>
<div>
<input ref="inputRef" type="text" />
<button @click="focusInput">Focus Input</button>
</div>
</template>
<script>
import { ref, onMounted } from 'vue';
export default {
setup() {
const inputRef = ref(null);
function focusInput() {
inputRef.value.focus();
}
return {
inputRef,
focusInput
};
}
};
</script>Это аналог того, как мы работали с ref во Vue 2.
Это основное, что нужно знать по поводу функции ref во Vue 3. В целом, ничего сложного здесь нет. Просто оборачиваем значение переменной и оно становится реактивным.
Чтобы оставить сообщение, зарегистрируйтесь/войдите на сайт через:
Email - зарегистрироваться / войти