Vue3+ts 的路由缓存配置(KeepAlive)

vue-router 官网中有这样一段文字

<router-view> 的 v-slot

<router-view> 暴露了一个 v-slot API,主要使用 <transition> 和 <keep-alive> 组件来包裹你的路由组件。

<Suspense>
  <template #default>
    <router-view v-slot="{ Component, route }">
      <transition :name="route.meta.transition || 'fade'" mode="out-in">
        <keep-alive>
          <component
            :is="Component"
            :key="route.meta.usePathKey ? route.path : undefined"
          />
        </keep-alive>
      </transition>
    </router-view>
  </template>
  <template #fallback> Loading... </template>
</Suspense>

如果只是这样设置就只能做到全局的缓存,当你想使用分别缓存的的话,应该这样使用:

<router-view v-slot="{ Component, route }">
            <keep-alive>
                <component :is="Component" :key="route.path" v-if="route.meta.keepAlive" />
            </keep-alive>
            <component :is="Component" :key="route.path" v-if="!route.meta.keepAlive" />
</router-view>

页面分别缓存需要配置key属性,来表示组件的唯一性和对应关系,如::key="$route.path"

这里默认大家知道路由组件的meta的设置,这里就是利用 meta.keepalive 配置实现分别缓存

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值