Vue /foo/:val
のようなルートを持つルーター]を使用する場合、ウォッチャーを パラメーターの変更に対応する に追加する必要があります。これにより、すべてのビューでやや煩わしいコードが重複します。 URLにパラメータがあります。
これは次の例のようになります。
export default {
// [...]
created() {
doSomething.call(this);
},
watch: {
'$route' () {
doSomething.call(this);
}
},
}
function doSomething() {
// e.g. request API, assign view properties, ...
}
それを克服する他の方法はありますか? created
と$route
の変更のハンドラーを組み合わせることができますか?ウォッチャーがまったく不要になるように、コンポーネントの再利用を無効にできますか?私はVue 2を使用していますが、これはVue 1にとっても興味深いかもしれません。
GitHubの問題 のおかげで見つけた答えの1つは次のとおりです。
v-for
でも使用される key
属性 を使用して、Vueビューの変更を追跡できます。機能させるには、属性をrouter-view
要素に追加する必要があります。
<router-view :key="$route.fullPath"></router-view>
これをビューに追加すると、$route
を監視する必要がなくなります。代わりに、Vue.jsはコンポーネントの完全に新しいインスタンスを作成し、created
コールバックも呼び出します。
ただし、これは全か無かのソリューションです。私が現在開発している小さなアプリケーションでうまく機能するようです。ただし、別のアプリケーションのパフォーマンスに影響を与える可能性があります。一部のルートでのみビューの再利用を無効にしたい場合は、key
の値の設定 ルートに基づいて を確認できます。しかし、私はそのアプローチがあまり好きではありません。