wiry_碎碎念 2023-02-19 15:01 采纳率: 0%
浏览 24

vue项目使用keep-alive基于动态路由做缓存时,应该使用include还是exclude关键字呢?

vue项目使用keep-alive基于动态路由做缓存时,应该使用include还是exclude关键字呢?

一直不太懂,如果使用include关键字,那应该如何设置组件的name值进行匹配;如果使用exclude关键字,是前端路由和组件直接写死name值吗?

  • 写回答

2条回答 默认 最新

  • qq_46161207 2023-02-19 15:54
    关注

    在使用标签基于动态路由做缓存时,可以使用include和exclude关键字来配置需要缓存和不需要缓存的组件。

    当使用include关键字时,只有被包含的组件才会被缓存,其他组件不会被缓存。这意味着您需要设置组件的name属性来与标签中的include值匹配。如果name值匹配成功,该组件将会被缓存。

    例如,以下代码片段演示了如何使用include关键字:

    
    <template>
      <div>
        <router-view v-slot="{ Component }">
          <keep-alive :include="cacheList">
            <component :is="Component" />
          </keep-alive>
        </router-view>
      </div>
    </template>
    
    <script>
    export default {
      data() {
        return {
          cacheList: ['Home', 'About'] // 包含需要缓存的组件的 name 属性值
        };
      }
    };
    </script>
    

    在上面的代码片段中,cacheList数组中包含需要缓存的组件的name属性值,例如Home和About。只有这些组件才会被缓存,其他组件不会被缓存。

    当使用exclude关键字时,被排除的组件不会被缓存,其他组件都会被缓存。在这种情况下,您需要在前端路由和组件中硬编码name属性值来匹配标签中的exclude值。

    例如,以下代码片段演示了如何使用exclude关键字:

    
    <template>
      <div>
        <router-view v-slot="{ Component }">
          <keep-alive :exclude="cacheList">
            <component :is="Component" />
          </keep-alive>
        </router-view>
      </div>
    </template>
    
    <script>
    export default {
      data() {
        return {
          cacheList: ['Home', 'About'] // 被排除的组件的 name 属性值
        };
      }
    };
    </script>
    

    在上面的代码片段中,cacheList数组中包含需要排除的组件的name属性值,例如Home和About。这些组件不会被缓存,其他组件都会被缓存。

    综上所述,使用include和exclude关键字的选择取决于您的实际需求和代码架构。如果您需要缓存的组件数量较少,您可以使用include关键字来缓存指定的组件。如果您需要排除的组件数量较少,您可以使用exclude关键字来排除指定的组件。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月19日