私は、タブのような一連のコンポーネントでvue-routerを使用しています。各<router-link>
はタブで、下のスペースは<router-view>
です。 2つのタブはそれぞれ異なるフィルタを持つ同じコンポーネントですが、それらがproducts
で、ルータがフィルタリングのパラメータを追加するとします:/products/new
& /products/sale
Vue 2 <keep-alive><router-view>とキーが動作しない
products
の中には、経路が開かれたときに取り付けられる個別のproduct
コンポーネントがあります。私の問題は、私がルートを切り替えると、フィルタのパラメータが変更されたときに、毎回product
コンポーネントが再マウントされるということです。私はそれらをキャッシュして前後の切り替えが簡単になるようにしたいと思います。これを行うには、<keep-alive>
を設定し、:key='$route.fullPath'
を<router-view>
に追加しましたが、キャッシュされていないようです。各product
は、products
の間で切り替えると、まだmounted()
イベントを発しています。
<keep-alive>
<router-view :key='$route.fullPath'></router-view>
</keep-alive>
それぞれproducts
ビューを別のコンポーネントにする必要がありますか?
こんにちは感謝を!最初の解決策は、 ''を削除し、動的コンポーネントを返すことでした。 '<コンポーネントのv-bind:is =" $ route.name "/> 'ここで、ルートの名前は次のようになります。コンポーネントの名前これはルーティングに関して機能しますが、コンポーネントは2つのバージョンの間でクリックしたときにまだ再マウントされています。\ –
okwme
これ以上は真実ではないようです。 [ルーターのドキュメント](http://router.vuejs.org/ja/api/router-view.html)を引用する: '単なるコンポーネントなので、とで動作します。両者を併用する場合は、必ず inside'を使用してください –
oliverpool