И во Vue, watch
и во Vue computed
используются для мониторинга изменений данных, но их сценарии использования и методы реализации немного отличаются.
watch
Он используется для отслеживания определенного изменения данных, и когда отслеживаемые данные изменяются, соответствующая функция обратного вызова будет выполняться автоматически. watch
Использование заключается в следующем:
watch: {
myData: function(newValue, oldValue) {
// do something when myData changes
}
}
В приведенном выше коде myData
это отслеживаемые данные, когда их значение изменится, watch
будет автоматически выполнена функция обратного вызова, и новое значение newValue
и старое значение будут переданы в oldValue
.
computed
Он используется для расчета определенного значения, которое будет автоматически обновляться в соответствии с изменениями в данных, от которых оно зависит. Разница watch
в том, что computed
вместо выполнения функции обратного вызова возвращается новое значение. computed
Использование заключается в следующем:
computed: {
myComputedValue: function() {
// calculate myComputedValue based on other data
return result;
}
}
В приведенном выше коде myComputedValue
это рассчитанное новое значение. Его расчет основан на других данных. При изменении данных он computed
автоматически пересчитывает новое значение и возвращает его.
Следует отметить, что computed
возвращаемое значение автоматически обновляется в соответствии с изменением данных, от которых оно зависит, а результат вычисления будет кэшироваться и не будет пересчитываться до тех пор, пока не изменятся данные, от которых оно зависит. Поэтому в некоторых сценариях, требующих результатов расчетов, удобнее и эффективнее computed
использовать .watch