Vue: O Vue não chama o observador quando você muda o objeto antes de destruir

Criado em 23 mai. 2018  ·  3Comentários  ·  Fonte: vuejs/vue

Versão

2.5.16

Link de reprodução

https://jsfiddle.net/86s8qufj/

Passos para reproduzir

  1. Abrir link de reprodução
  2. Abra o console
  3. Clique no botão "Toggle TestComponent".
    Isso cria TestComponent para você.
  4. Tente mudar algo na entrada. Você pode ver 'No inspetor testInfo' no console, o que significa que o observador testInfo chamou.
  5. Clique no botão "Toggle TestComponent" novamente.
    Isso destrói TestComponent.
    No gancho beforeDestroy eu altero a propriedade 'testInfo'.
    Mas você pode ver apenas 'In beforeDestroy' no console em vez de 'In beforeDestroy' e 'In testInfo watcher'.

O que é esperado?

Espero que o observador da propriedade 'testInfo' seja chamado quando eu alterá-la no gancho beforeDestory.

O que realmente está acontecendo?

Eu mudo a propriedade 'testInfo' no gancho beforeDestroy, mas o observador não chamou.

Comentários muito úteis

Eu diria que seria bom mencioná-lo na documentação - porque agora há "Chamado logo antes de uma instância do Vue ser destruída. Neste estágio, a instância ainda está totalmente funcional."

Todos 3 comentários

Além disso, se você tentar registrar testInfo no gancho destruído, você verá um novo valor. Mas o objeto deve ser destruído ....

beforeDestroy acontece logo antes de destruir a instância do Vue, portanto, é normal que os observadores não sejam acionados, pois seriam acionados quando a instância fosse destruída (tornando a maioria das funções do observador inválidas).
Você deve chamar o observador você mesmo no gancho beforeDestroy vez de alterar os dados

Eu diria que seria bom mencioná-lo na documentação - porque agora há "Chamado logo antes de uma instância do Vue ser destruída. Neste estágio, a instância ainda está totalmente funcional."

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

seemsindie picture seemsindie  ·  3Comentários

bdedardel picture bdedardel  ·  3Comentários

robertleeplummerjr picture robertleeplummerjr  ·  3Comentários

paceband picture paceband  ·  3Comentários

lmnsg picture lmnsg  ·  3Comentários