yandex-maps-unofficial / vue-yandex-maps

Yandex Maps 3.0 components library for VueJS.
https://yandex-maps-unofficial.github.io/vue-yandex-maps/
MIT License
70 stars 9 forks source link

(deprecation COMPONENT_V_MODEL) Component declares "modelValue" prop, which is Vue 3 usage, but is running under Vue 2 compat v-model behavior #223

Closed bigperson closed 6 months ago

bigperson commented 6 months ago

Версия библиотеки

2.0.0-rc.13

Как воспроизвести

"vue": "^3.1", "vue-yandex-maps": "^2.0.0-rc.13" "@vue/compat": "^3.1.0",

import { shallowRef } from 'vue'; const map = shallowRef(null);

Опишите проблему

Мигрирую с vue2 на vue3 через @vue/compat Консоль браузера выдает предупреждение image

Дополнительная информация

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

Это предупреждение от Vue связано с изменениями в поведении директивы v-model между Vue 2 и Vue 3. В Vue 3, v-model на компонентах теперь использует modelValue в качестве пропа для передачи значения и событие update:modelValue для обновления этого значения. Это отличается от Vue 2, где по умолчанию использовались value и input.

Причина предупреждения Предупреждение говорит о том, что ваш компонент YandexMap объявляет проп modelValue, что является подходом Vue 3, но при этом компонент работает в режиме совместимости с Vue 2 для v-model. Vue предлагает вам явно выбрать поведение Vue 3 для v-model в этом компоненте, используя compatConfig. Изучив исходный код компонента YandexMap из библиотеки vue-yandex-maps, можно увидеть, что компонент реализован для использования с Vue 2, но также содержит пропсы и эмиты, которые подходят под новую модель v-model в Vue 3 (modelValue и update:modelValue). Это означает, что если вы используете эту библиотеку в проекте на Vue 3 и сталкиваетесь с предупреждением о депрекации COMPONENT_V_MODEL, возможные действия могут включать:

Игнорирование предупреждения: Если компонент работает должным образом и предупреждение не влияет на функциональность вашего приложения, вы можете просто игнорировать это предупреждение. Vue 3 предоставляет средства для подавления конкретных предупреждений, но это может быть не лучшим решением, так как предупреждения часто указывают на потенциальные проблемы или места для оптимизации.

Настройка compatConfig на уровне приложения: Вы можете настроить поведение совместимости на уровне всего приложения, чтобы отключить предупреждение COMPONENT_V_MODEL, используя configureCompat в точке входа вашего приложения. Однако это изменит поведение для всех компонентов в вашем приложении и может иметь непредвиденные последствия.

Контрибуция в библиотеку: Если вы разбираетесь в Vue 3 и чувствуете себя уверенно, вы можете предложить изменения в библиотеку vue-yandex-maps через pull request, чтобы она лучше соответствовала поведению Vue 3 без необходимости отключать предупреждения. Это может включать добавление compatConfig непосредственно в компонент YandexMap или другие изменения для устранения предупреждения.

Ответы на вопросы

  • [X] Я использую версию 2.x
  • [X] Я поискал похожие ошибки и не нашел таковых
daniluk4000 commented 6 months ago

@bigperson можете игнорировать это предупреждение, после убирания @vue/compat ругаться не будет.

Возникает из-за того, что либа поддерживает одновременно Vue 2 и Vue 3. На функционал не влияет.