Vue: ref().value меня доконал, постоянно забываю .value и сижу дебажу пустоту

Теги: #Vue
Рейтинг: 53.4% · 31 голосов
Frontend и backend разработка: JavaScript, TypeScript, React, Next.js, Vue, Node.js, PHP, REST и GraphQL API, вёрстка HTML/CSS и современные веб-приложения.
Ответить
Аватара пользователя
Version
Сообщения: 68
Зарегистрирован: 11 май 2026, 03:17

Vue: ref().value меня доконал, постоянно забываю .value и сижу дебажу пустоту

Сообщение Version »

Перешёл на vue 3 composition api, в целом норм, но это вечное .value в шаблоне не пишешь а в скрипте пишешь — я уже раз пять ловил баг что забыл .value и сравниваю объект ref с числом. Нормальные люди как с этим живут?
👍1 ❤️ 🔥 😄 🤔
✔ Лучший ответ сформирован автоматически — depechie
Спасение от этого — реактивная деструктуризация через toRefs() или toReactive(). Если пишешь `const { count } = toRefs(state)`, то count уже ref и .value нужен только в скрипте, зато в шаблоне прозрачно. Но главный инсайт: eslint-plugin-vue с правилом vue/no-ref-as-operand ловит именно твой баг — сравнение ref-объекта с примитивом. Поставь и забудь про дебаг пустоты.
Перейти к ответу →
Аватара пользователя
lonelygoblin
Сообщения: 61
Зарегистрирован: 12 май 2026, 12:45

Re: Vue: ref().value меня доконал, постоянно забываю .value и сижу дебажу пустоту

Сообщение lonelygoblin »

Живём с volar который подсвечивает забытый .value прямо в редакторе, и с привычкой. Ещё помогает reactive() для объектов где .value не нужен вообще. Через месяц перестаёшь замечать, честно.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
depechie
Сообщения: 67
Зарегистрирован: 11 май 2026, 11:32

Re: Vue: ref().value меня доконал, постоянно забываю .value и сижу дебажу пустоту

Сообщение depechie »

✔ Лучший ответ — сформирован автоматически
Спасение от этого — реактивная деструктуризация через toRefs() или toReactive(). Если пишешь `const { count } = toRefs(state)`, то count уже ref и .value нужен только в скрипте, зато в шаблоне прозрачно. Но главный инсайт: eslint-plugin-vue с правилом vue/no-ref-as-operand ловит именно твой баг — сравнение ref-объекта с примитивом. Поставь и забудь про дебаг пустоты.
👍 ❤️ 🔥3 😄1 🤔
Аватара пользователя
tiger31
Сообщения: 4
Зарегистрирован: 27 май 2026, 13:53

Re: Vue: ref().value меня доконал, постоянно забываю .value и сижу дебажу пустоту

Сообщение tiger31 »

Есть ещё паттерн — использовать reactive() вместо ref() для сложных объектов и ref() только для примитивов. Тогда логика простая: скалярное значение — ref, объект — reactive, .value нужен только в первом случае. Когда начал так строго разделять, количество таких багов упало до нуля.
👍2 ❤️ 🔥 😄 🤔
Аватара пользователя
malek2033
Сообщения: 1
Зарегистрирован: 13 май 2026, 11:42

Re: Vue: ref().value меня доконал, постоянно забываю .value и сижу дебажу пустоту

Сообщение malek2033 »

В Vue 3.5 завезли reactive props destructure — теперь можно делать `const { count = 0 } = defineProps()` и count реактивен без .value. Если ещё не смотрел в сторону 3.5, это один из главных QoL-апдейтов именно для этой боли.
👍 ❤️ 🔥 😄 🤔1
Аватара пользователя
sainty
Сообщения: 94
Зарегистрирован: 11 май 2026, 02:57

Re: Vue: ref().value меня доконал, постоянно забываю .value и сижу дебажу пустоту

Сообщение sainty »

и поэтому я до сих пор на options api и не чешусь. composition продали как спасение, а по факту поменяли this на .value, баги те же, только в профиль
👍1 ❤️2 🔥1 😄1 🤔
Аватара пользователя
sabaza
Сообщения: 39
Зарегистрирован: 12 май 2026, 00:38

Re: Vue: ref().value меня доконал, постоянно забываю .value и сижу дебажу пустоту

Сообщение sabaza »

@tiger31, reactive хорош ровно до момента когда надо заменить объект целиком. пишешь state = newState и реактивность отвалилась молча, ни ошибки, ни ворнинга, сиди гадай почему шаблон не обновляется. имхо это хуже забытого .value, тот хоть линтером ловится за минуту. поэтому у меня ref везде, единообразие дороже красоты
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
juniorstack
Сообщения: 62
Зарегистрирован: 12 май 2026, 12:04

Re: Vue: ref().value меня доконал, постоянно забываю .value и сижу дебажу пустоту

Сообщение juniorstack »

@malek2033, только учти что деструктурированные пропсы из 3.5 нельзя просто так передать в композабл, реактивность теряется. надо оборачивать в () => count или toRef. то есть одну боль убрали, другую завезли, классика vue. но в шаблонах да, стало сильно чище
👍 ❤️ 🔥 😄 🤔
Ответить
Поделиться темой: ✈ Telegram VK
  • Похожие темы

Вернуться в «Веб-разработка»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость