Vue: Vue не вызывает наблюдателя, когда вы меняете опору в beforeDestroy

Созданный на 23 мая 2018  ·  3Комментарии  ·  Источник: vuejs/vue

Версия

2.5.16

Ссылка для воспроизведения

https://jsfiddle.net/86s8qufj/

Действия по воспроизведению

  1. Открытая ссылка на воспроизведение
  2. Открытая консоль
  3. Нажмите кнопку «Переключить TestComponent».
    Это создаст для вас TestComponent.
  4. Попробуйте что-то изменить во вводе. Вы можете увидеть «В наблюдателе testInfo» в консоли, что означает, что наблюдатель testInfo вызвал.
  5. Снова нажмите кнопку «Toggle TestComponent».
    Это уничтожит TestComponent.
    В хуке beforeDestroy я меняю свойство testInfo.
    Но вы можете видеть только «In beforeDestroy» в консоли вместо «In beforeDestroy» и «In testInfo watcher».

Что ожидается?

Я ожидаю, что наблюдатель для свойства testInfo будет вызываться, когда я изменю его в обработчике beforeDestory.

Что на самом деле происходит?

Я меняю свойство testInfo в обработчике beforeDestroy, но наблюдатель не вызывается.

Самый полезный комментарий

Я бы сказал, что было бы неплохо упомянуть об этом в документации, потому что теперь есть «Вызывается прямо перед уничтожением экземпляра Vue. На этом этапе экземпляр все еще полностью функциональный».

Все 3 Комментарий

Также, если вы попытаетесь записать testInfo в уничтоженный хук - вы увидите новое значение. Но Объект надо уничтожить ....

beforeDestroy происходит прямо перед разрывом экземпляра Vue, поэтому для наблюдателей нормально не запускаться, как они будут запускаться после уничтожения экземпляра (что делает большинство функций наблюдателей недействительными).
Вы должны сами вызвать наблюдателя в хуке beforeDestroy вместо изменения данных

Я бы сказал, что было бы неплохо упомянуть об этом в документации, потому что теперь есть «Вызывается прямо перед уничтожением экземпляра Vue. На этом этапе экземпляр все еще полностью функциональный».

Была ли эта страница полезной?
0 / 5 - 0 рейтинги