@andrei_pro

Почему не рекомендуется делать огромное число коммитов за короткий промежуток времени?

Делаю компонент перетаскивания. При событии mouseMove делаю коммиты $store.commit('drag') - их сотни за секунду может быть.
Сразу в vuex, потому что многие компоненты должны сразу менять состояние от координат.

При таком подходе чуть падает fps и рекомендуют так не делать и хранить координаты в локальных переменных.

Собственно почему vuex не подходит для огромного числа коммитов?
  • Вопрос задан
  • 165 просмотров
Решения вопроса 2
Aetae
@Aetae Куратор тега Vue.js
Тлен
Потому что это хранилище. Там надо хранить.
Это не шина обмена данными.
Если вы делаете компонентомешалку, используйте например provide и inject для общей в рамках родительского компонента системы.
Ответ написан
Kozack
@Kozack Куратор тега Vue.js
Thinking about a11y
Собственно почему vuex не подходит для огромного числа коммитов?

Потому что при каждом комите Vue проходится по всем зависимостям, пересчитывает их, пересчитывает состояния всех компонентов, изменяет DOM где это нужно. А это всё блокирующие операции.

Лучше используйте EventBus : транслируйте разыне события, не просто "drag" но и "dragstart" и "dragend". Передавайте с событиями нужные координаты. И создавайте компоненты-подписчики на нужные события.

Отдельно можете добавить тротлинг. Не большой, буквально до 100 миллисекунд. Уже это существенно уменьшит количество комитов, а интерфейс останется таким же "мгновенным"
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
Потому что будет лагать.

Попробуйте обрабатывать только dragstart/dragend (добавьте еще dragover/
dragleave, если они нужны), а от mousemove или drag отказаться вообще.
https://developer.mozilla.org/ru/docs/Web/Guide/HT...
Ответ написан
Robur
@Robur
Знаю больше чем это необходимо
Что вы хотите, если вы сотни раз в секунду обновляете реактивный стор на который подписаны "многие компоненты" которые тоже должны обновиться на каждый из этих сотен раз и перерисовать себя заново.

Задайте себе вопрос - зачем вам менять это сотню раз в секунду? большая часть из этого даже на экран не успеет вывестись, а скорее всего и в дом.

поставьте на свой обработчик throttle и не дергайте стор чаще чем 20-30 раз в секунду.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы