Vue: beforeDestroyで小道具を変更しても、Vueはウォッチャーを呼び出しません

作成日 2018年05月23日  ·  3コメント  ·  ソース: vuejs/vue

バージョン

2.5.16

複製リンク

https://jsfiddle.net/86s8qufj/

再現する手順

  1. 複製リンクを開く
  2. コンソールを開く
  3. 「ToggleTestComponent」ボタンをクリックしてください。
    これにより、TestComponentが作成されます。
  4. 入力の何かを変更してみてください。 コンソールに「IntestInfowatcher」が表示されます。これは、testInfowatcherが呼び出したことを意味します。
  5. もう一度「ToggleTestComponent」ボタンをクリックしてください。
    これにより、TestComponentが破棄されます。
    beforeDestroyフックで、「testInfo」プロパティを変更します。
    ただし、コンソールには「InbeforeDestroy」と「IntestInfowatcher」ではなく「InbeforeDestroy」しか表示されません。

何が期待されますか?

beforeDestoryフックで変更すると、「testInfo」プロパティのウォッチャーが呼び出されると思います。

実際に何が起こっているのですか?

beforeDestroyフックの「testInfo」プロパティを変更しましたが、ウォッチャーが呼び出されません。

最も参考になるコメント

ドキュメントでそれについて言及するとよいと思います。原因は、「Vueインスタンスが破棄される直前に呼び出されます。この段階では、インスタンスはまだ完全に機能しています」ということです。

全てのコメント3件

また、破棄されたフックにtestInfoを記録しようとすると、新しい値が表示されます。 ただし、オブジェクトは破棄する必要があります。

beforeDestroyは、Vueインスタンスを破棄する直前に発生するため、インスタンスが破棄されるとトリガーされるため、ウォッチャーがトリガーしないのは通常のことです(ほとんどのウォッチャー機能が無効になります)。
データを変更するのではなく、 beforeDestroyフックでウォッチャーを自分で呼び出す必要があります

ドキュメントでそれについて言及するとよいと思います。原因は、「Vueインスタンスが破棄される直前に呼び出されます。この段階では、インスタンスはまだ完全に機能しています」ということです。

このページは役に立ちましたか?
0 / 5 - 0 評価