handler: function () {
this.getSchedule(this.year, this.month, this.departmentId);
}
}
У меня правильный синтаксис watch?
Дело в том, что этот вотч запускает функцию this.getSchedule. И внутри него я обращаюсь к props-ам. А эти пропсы почему то не обрабатываются. Хотя они не пустые.
Watch может сработать раньше чем пропсы определились. Стоит добавить проверку на это
имя функции надо задать , анонимные функции сложней отлаживать
если не прокидываешь параметры deep, immediate и тд, то в такой конструкции нет смысла, легче просто watch: { departmentId(){ this.getSchedule(); } если прокидываешь watch: { departmentId: { handler() { this.getSchedule(); }, deep: true, immediate: true }, а вообще доку лучше почитать
А как добавить проверку. В самой функции? В вотче?
Вот выше важное написали. А проверку добавить - где удобнее.
Проверку надо бы добавить как if oldValue<>newValue? Вотч же может один раз прогнатся и условие могут тогда быть false. А следующий раз не вызватся, т.к. интерпретатор может подумать что уже вызвал. Может быть такое?
У меня были частные случаи, когда при отрисовке компонента вотч выполнялся раньше, чем получал доп аттрибуты из data или props. Я просто проверял их на undefined (ну или как они записаны в default)
Ну он один раз проверить и пропустить вызов функции. Дальше же вотч дергатся не будет. Смысл тогда проверки?
Попробуйте сначала переопределять watch в более простой конструкции, как писали выше. Если это не поможет, надо смотреть логику всего компонента.
Обсуждают сегодня