Vue: ref().value меня доконал, постоянно забываю .value и сижу дебажу пустоту
Рейтинг: 53.4% · 31 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
Vue: ref().value меня доконал, постоянно забываю .value и сижу дебажу пустоту
Перешёл на vue 3 composition api, в целом норм, но это вечное .value в шаблоне не пишешь а в скрипте пишешь — я уже раз пять ловил баг что забыл .value и сравниваю объект ref с числом. Нормальные люди как с этим живут?
✔ Лучший ответ сформирован автоматически — 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 и сижу дебажу пустоту
✔ Лучший ответ — сформирован автоматически
Спасение от этого — реактивная деструктуризация через toRefs() или toReactive(). Если пишешь `const { count } = toRefs(state)`, то count уже ref и .value нужен только в скрипте, зато в шаблоне прозрачно. Но главный инсайт: eslint-plugin-vue с правилом vue/no-ref-as-operand ловит именно твой баг — сравнение ref-объекта с примитивом. Поставь и забудь про дебаг пустоты.
Re: Vue: ref().value меня доконал, постоянно забываю .value и сижу дебажу пустоту
Есть ещё паттерн — использовать reactive() вместо ref() для сложных объектов и ref() только для примитивов. Тогда логика простая: скалярное значение — ref, объект — reactive, .value нужен только в первом случае. Когда начал так строго разделять, количество таких багов упало до нуля.
Re: Vue: ref().value меня доконал, постоянно забываю .value и сижу дебажу пустоту
В Vue 3.5 завезли reactive props destructure — теперь можно делать `const { count = 0 } = defineProps()` и count реактивен без .value. Если ещё не смотрел в сторону 3.5, это один из главных QoL-апдейтов именно для этой боли.
Re: Vue: ref().value меня доконал, постоянно забываю .value и сижу дебажу пустоту
@tiger31, reactive хорош ровно до момента когда надо заменить объект целиком. пишешь state = newState и реактивность отвалилась молча, ни ошибки, ни ворнинга, сиди гадай почему шаблон не обновляется. имхо это хуже забытого .value, тот хоть линтером ловится за минуту. поэтому у меня ref везде, единообразие дороже красоты
- juniorstack
- Сообщения: 62
- Зарегистрирован: 12 май 2026, 12:04
Re: Vue: ref().value меня доконал, постоянно забываю .value и сижу дебажу пустоту
@malek2033, только учти что деструктурированные пропсы из 3.5 нельзя просто так передать в композабл, реактивность теряется. надо оборачивать в () => count или toRef. то есть одну боль убрали, другую завезли, классика vue. но в шаблонах да, стало сильно чище
Поделиться темой:
✈ Telegram
VK
- Похожие темы
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость