vue はどのように監視監視を削除しますか?

リストから詳細ページに入り、パラメータを運びます。リストページを固定位置に保つためにパッケージを使用します。この場合、詳細ページに入るときにパラメータを取得するルートをリッスンするkeep-alive必要があります。watch

watch: {
	$route: {
		handler() {
			// do some thing
		},
		immediate: true // 立即监听
	}
}

ただし、
現在のルートが監視されており、
のページに戻ったときにもトリガーされるため、パラメータが失われ、ビジネス ロジック エラーが発生する可能性があります。私の最初の反応は、関数本体で判断し、対応するコードを実行しないことです。1 回の操作の後、目標は達成されますが、それでもトリガーされます。プログラマーとしてこれは許されないので、どうやって削除するか考えてみましたwatch


handler


watch


watch
document.removeListenr

data() {
	return {
		watchRoute: () => {}
	}
}
// 定义监听函数
created() {
	this.watchRoute = this.$watch(
	// 此处被监听的对象必须是一个函数,否则会报错
	() => {
	  return this.$route
	},
	() => {
		// do some thing
	}, { immediate: true })
}
destroyed() {
	// 页面销毁时调用监听函数,就可以移除watch
	this.watchRoute()
}

ここに別のナレッジ ポイントを挿入します。keep-aliveコンポーネントは実行されずdestroyedcreated関数は 1 回だけ実行されます。それぞれ(アクティブ化) および(非アクティブ化) 関数
に置き換えられます。activateddeactivated

おすすめ

転載: blog.csdn.net/xinTianou123/article/details/127927613