动态设置keepAlive的问题


需求:(1).用户从首页进入表单页时候,表单页清空缓存(keepAlive=false)
     (2).用户从其他页面进入表单页时候,表单页不需要清空缓存(keepAlive=true)

思路:

1.在app页面里给keepAlive设置一个动态的 :exclude="cachedViews",cachedViews:this.$store.state.cachedViews

2.当从首页进入表单页时候,再routerLeave里进行操作:触发mutation里的添加keepAlive方法

3.当从表单页离开时候,再routerLeave里进行操作,触发mutation里的删除keepAlive方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3 中的动态 `keep-alive` 组件可以用于缓存动态组件,以提高应用的性能和用户体验。在 Vue 3 中,`keep-alive` 组件已经被重命名为 `Teleport`,但其功能仍然类似。 要在 Vue 3 中使用动态 `keep-alive` 缓存组件,可以按照以下步骤进行操作: 1. 首先,在需要缓存的组件外部包裹一个 `Teleport`(或 `keep-alive`)组件,并设置一个唯一的 `key` 属性。例如: ```vue <template> <Teleport v-bind:key="componentKey"> <component :is="currentComponent"></component> </Teleport> </template> ``` 2. 然后,在你需要切换的组件上,通过修改 `componentKey` 的值来触发组件的重新渲染。例如: ```vue <template> <button @click="toggleComponent">切换组件</button> </template> <script> export default { data() { return { currentComponent: 'ComponentA', componentKey: 0 }; }, methods: { toggleComponent() { this.currentComponent = this.currentComponent === 'ComponentA' ? 'ComponentB' : 'ComponentA'; this.componentKey += 1; } } } </script> ``` 在上面的例子中,每当点击按钮时,`currentComponent` 的值会切换为另一个组件的名称,而 `componentKey` 的值会加 1。这样,`Teleport` 内部的组件会重新渲染,并且之前渲染过的组件会被缓存起来。 请注意,Vue 3 中的 `Teleport` 组件需要配合 Vue 的全局 `provide/inject` API 使用,以确保组件状态的正确传递。如果你需要更详细的示例或更多关于 Vue 3 动态 `keep-alive` 的信息,可以参考 Vue 3 的官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值