Есть некоторый компонент, состояние которого не имеет смысла без определенной переменной в store. Эта переменная в начале подгружается с сайта отдельным запросом.
Таким образом компонент может загрузится и смонтироваться раньше чем появилась переменая в store. Если бы от нее зависил тольок рендеринг - можно бы было использовать v-if, но за этой переменной включено слежение и при изменении происходит запрос к серверу из компонента.
Таким образом когда переменная загружается первоначально в store, компонент выполняет ненужный запрос, так как состояние изменилось.
Я конечно могу добавить в каждый вотчер проверку есть ли в сторе переменная, но нельзя ли как-то вообще отключить вотчеры до "инициализации"? Поставить компонент на паузу так сказать.
UPD:
Это форма оформления заказа, которая инициализируется некоторыми начальными данными в created.
Данные связаны через v-model с полями формы.
При изменении некоторых полей нужно отправить запрос, получить новые данные с сервера и заново установить поля в те значения которые реально сохранились на сервере.
При этом может в сторе обновиться состав корзины - именно на это должен среагировать компонент и сделать еще одни запрос чтобы узнать как изменились поля заказа.
Но он также реагирует и на начальную загрузку корзины, как на изменение.
Вообще вотчер по дефолту не срабатывает в момент навешивания. Ну и зачем в вотчере делать запрос к серверу, если у переменной неправильное значение? Один if спасет...
Антон Антон, не срабатывает.
Но он срабатывается позже - когда изменяется вычисляемое значение которое вычисляется на основе данных в store.
В итоге такой лог:
Компонент создался и отрендерился.
В сторе подгрузились данные.
Пересчиталось отслеживаемое значение.
Сработал вотчер и выполнил запрос.
Один if спасет...
Далеко не один.
Например потому что вотчеров несколько. Проверять надо не только что данные есть в сторе, но и например смонтированность компонента, потому что в created загружаются начальные данные и они тоже меняют отслеживаемые значения.
Это форма оформления заказа, которая инициализируется некоторыми начальными данными в created.
Данные связаны через v-model с полями формы.
При изменении некоторых полей нужно отправить запрос, получить новые данные с сервера и заново установить поля в те значения которые реально сохранились на сервере.
При этом может в сторе обновиться состав корзины - именно на это должен среагировать компонент и сделать еще одни запрос чтобы узнать как изменились поля заказа.
Но он также реагирует и на начальную загрузку корзины, как на изменение.
Слишком абстрактные рассуждения. если есть переменная (набор переменных, вычисляемое совйство и т.п.), отвечающих за "рендер" (тот самый v-if или "условие паузы") то его можно использовать в проверке, надо ли отправлять запрос или нет. В конце концов это (частично) может зависеть от состояния (или пропса или переменной стора или всё вместе) самого компонента.
Антон Антон, именно. Поэтому я изначально и не стал вдаваться в подробности того от чего это зависит.
Конечно самое простое - сделать еще одно вычисляемое свойство и проверять его перед отправкой запроса.
Но хотелось бы найти решение и затормозить компонент до определенного события.
Кстати, а есть способ узнать смонтирован компонент или нет, из самого компонента, не добавляя в data свойство изменяемое в mounted?