私のルートコンポーネントの一部に条件付きでキープアライブを設定し、キャッシュされたルートをクリアして新しいキャッシュされたルートを設定できるようにしようとしています。 以下のコードは動作しますが、キャッシュされたコンポーネントをクリアすることはできません。キープアライブを使用して動的に1つのルートコンポーネントをキャッシュする
私は
{
name: 'Route1',
path: '/route1',
component: lazyLoading('route1', true),
meta: {
auth: true,
cacheRoute: 'Route1',
},
},
{
name: 'Route2',
path: '/route2',
component: lazyLoading('route1', true),
meta: {
auth: true,
cacheRoute: 'Route2',
},
},
をキャッシュしたいし、私は私のルータ上beforeEachメソッドを使用してルート上のメタ小道具を持っています。
router.beforeEach((to, from, next) => {
if (to.meta.cacheRoute && store.getters.cachedRouteObject.cached !==
to.meta.cacheRoute)
store.dispatch('cacheRoute', {
cached: to.meta.cacheRoute,
uncached: from.meta.cacheRoute,
}).then(() => {
next();
});
next();
});
そして、このようなvuexのcachedRouteObject使用:ポイントは、私はルートからのルートに切り替えると時間をかけて滞在をキャッシュし、キャッシュされる必要があり、すべてのコンポーネントが私はで終わるということです
<keep-alive :include="cachedRouteObject.cached"
:exclude="cachedRouteObject.uncached">
<router-view></main-router-view>
</keep-alive>
を多くのキャッシュされたコンポーネント私は期待していたように、除外属性は機能しません。 1つのルートコンポーネントだけを常にキャッシュする方法に関するアイデア。
イム彼らはただ、ルート名と一致します –