Вместо:
docRef.get().then(function (doc) {
Использование:
docRef.get().then((doc) => {
Объяснение
this
внутри блока тела функции стрелки относится к текущему контексту, в вашем случае к экземпляру Vue / component.
Но когда вы используете function
вместо функции стрелки, блок {}
создает новый контекст, изменяя семантику this
, заставляя его указывать на нечто иное, чем this
вне этой функции.
Другими словами, ваша проблема возникает из-за того, что каждый function () {}
имеет свой собственный контекст (свой собственный this
), который может быть установлен на что-то другое. Функции стрелок OTOH наследуют контекст (this
) того места, где он объявлен. В этом случае, поскольку вы объявляете его внутри метода, this
является экземпляром Vue. Использование функции стрелки сохраняет его. Использование function()
не гарантирует этого (this
может быть установлено на что-то другое, что обычно имеет место).
Для более подробной информации, я рекомендую MDN - Функции стрелок .