当前位置: 首页 > wzjs >正文

泸州建设厅官方网站面料做电商 哪个网站好

泸州建设厅官方网站,面料做电商 哪个网站好,2016企业网站建设方案,网站商城模板在 Vue3 中实现两个组件的动态切换保活&#xff0c;核心是通过 <component> 动态组件与 <KeepAlive> 缓存组件的组合使用。以下是具体实现方案和进阶技巧&#xff1a; 一、基础实现方案 1. 动态组件 KeepAlive 保活 使用 <component :is> 实现动态切换&am…

在 Vue3 中实现两个组件的动态切换保活,核心是通过 <component> 动态组件与 <KeepAlive> 缓存组件的组合使用。以下是具体实现方案和进阶技巧:


一、基础实现方案

1. 动态组件 + KeepAlive 保活

使用 <component :is> 实现动态切换,并用 <KeepAlive> 包裹以实现状态缓存:

<template><div><button @click="toggleComponent">切换组件</button><KeepAlive><component :is="currentComponent" /></KeepAlive></div>
</template><script setup>
import { shallowRef } from 'vue'
import CompA from './CompA.vue'
import CompB from './CompB.vue'const components = { CompA, CompB }
const currentComponent = shallowRef(CompA) // 使用 shallowRef 避免深度响应式const toggleComponent = () => {currentComponent.value = currentComponent.value === CompA ? CompB : CompA
}
</script>

关键点

  • shallowRef 替代 ref:避免对组件对象进行深度响应式转换,减少性能开销
  • KeepAlive 包裹:缓存组件实例,保留表单输入、滚动位置等状态

二、高级配置技巧

1. 精准控制缓存范围

通过 include/exclude 指定需缓存的组件名:

<KeepAlive include="CompA,CompB" max="2"><component :is="currentComponent" />
</KeepAlive>

参数说明

  • include:字符串/正则/数组,匹配组件 name 属性
  • max:最大缓存数(超过时按 LRU 算法淘汰旧实例)
2. 生命周期管理

利用专属钩子处理缓存状态:

<script setup>
import { onActivated, onDeactivated } from 'vue'onActivated(() => {console.log('组件激活:恢复定时器/网络请求')timer = setInterval(fetchData, 5000)
})onDeactivated(() => {console.log('组件休眠:清理资源')clearInterval(timer)
})
</script>

对比常规生命周期

场景常规组件被缓存组件
首次加载created → mountedcreated → mounted → activated
离开beforeUnmount → unmounteddeactivated
再次进入重新创建activated

三、常见问题解决

1. 组件未缓存
  • 原因:组件未声明 name 属性
  • 解决方案
    <!-- CompA.vue -->
    <script>
    export default { name: 'CompA' }
    </script><!-- 或使用 setup 语法糖 -->
    <script setup>
    defineOptions({ name: 'CompA' }) // 需安装 unplugin-vue-define-options 插件
    </script>
    
2. 动态切换卡顿
  • 优化方案
    • 使用异步组件加载(结合 defineAsyncComponent
    • 添加 CSS 过渡动画:
      .fade-enter-active, .fade-leave-active {transition: opacity 0.3s;
      }
      .fade-enter-from, .fade-leave-to {opacity: 0;
      }
      
3. 表单状态丢失
  • 强制刷新缓存:通过 key 属性重置组件
    <KeepAlive><component :is="currentComponent" :key="customKey" />
    </KeepAlive>
    
    切换时更新 customKey 值即可触发重新渲染。

四、性能优化建议

  1. 按需缓存:仅对高频切换或状态复杂的组件使用缓存
  2. 内存控制:设置 max 属性避免内存溢出(推荐值:3-5)
  3. 数据持久化:在 deactivated 时保存状态至 localStorage:
    onDeactivated(() => {localStorage.setItem('formData', JSON.stringify(formState))
    })
    

五、完整代码示例

<template><div class="container"><div class="switch-buttons"><button v-for="(comp, name) in components" :key="name"@click="currentComponent = comp":class="{ active: currentComponent === comp }">{{ name }}</button></div><KeepAlive :max="3"><Transition name="fade" mode="out-in"><component :is="currentComponent" /></Transition></KeepAlive></div>
</template><script setup>
import { shallowRef } from 'vue'
import CompA from './CompA.vue'
import CompB from './CompB.vue'const components = { CompA, CompB }
const currentComponent = shallowRef(CompA)
</script><style scoped>
.switch-buttons {margin-bottom: 20px;
}
button {padding: 8px 16px;margin-right: 10px;&.active {background: #1890ff;color: white;}
}
.fade-enter-active, .fade-leave-active {transition: opacity 0.3s;
}
.fade-enter-from, .fade-leave-to {opacity: 0;
}
</style>

扩展应用场景

  • 仪表盘模块切换(保留图表缩放状态)
  • 多步骤表单(缓存已填写步骤)
  • 选项卡式数据展示(保持分页器位置)

通过合理使用动态组件与 KeepAlive,可显著提升复杂交互场景下的用户体验。建议结合 Vue Devtools 观察组件缓存状态,针对性优化关键路径性能。


文章转载自:

http://dfpGwVAO.kfwrq.cn
http://ee8Lvzhu.kfwrq.cn
http://wHnZyBqZ.kfwrq.cn
http://RCUPenIo.kfwrq.cn
http://MCJocw0d.kfwrq.cn
http://NHFxCw0J.kfwrq.cn
http://ICciS68e.kfwrq.cn
http://vPtoilya.kfwrq.cn
http://5qF3Zl4R.kfwrq.cn
http://QUHT97Wh.kfwrq.cn
http://7UAVyzqK.kfwrq.cn
http://2jMAykG8.kfwrq.cn
http://bWMB3wRb.kfwrq.cn
http://7EYqUJaX.kfwrq.cn
http://a3gmbCXG.kfwrq.cn
http://AGaJOUSS.kfwrq.cn
http://AQHi14G5.kfwrq.cn
http://gHOD2wdF.kfwrq.cn
http://dA1Vb8CF.kfwrq.cn
http://EIVnxNdO.kfwrq.cn
http://6IFxrZNh.kfwrq.cn
http://tRiGKscQ.kfwrq.cn
http://yQ9xnrrp.kfwrq.cn
http://1G376jAO.kfwrq.cn
http://RijDiWNC.kfwrq.cn
http://sSh4g3iO.kfwrq.cn
http://Q4Wkg0rf.kfwrq.cn
http://syViQnIY.kfwrq.cn
http://EFGObg51.kfwrq.cn
http://oQGnRQzm.kfwrq.cn
http://www.dtcms.com/wzjs/738126.html

相关文章:

  • 当涂县微网站开发免费网站的资源可以发公众号吗
  • 装修的网站信息网站 cms
  • 云南专业网站建站建设姜堰区住房和城乡建设局网站
  • 视频网站怎么建产品销售型企业网站
  • 做co网站wordpress 功能块
  • 无锡网站建设在哪里网络小白如何建立个人网站
  • 云建站的正确步骤网站开发工程师中级高级
  • 网站建设经验与团队wordpress如何增加产品类目
  • 四川省住房和城乡建设厅网站电话鲜花网站设计
  • 云南网站建设公司直播类网站开发
  • 网址与网站的区别网站建设的合同条款
  • 做展示网站要恋用什么程序视频网站建设方案书
  • 网站建设asp类似微薄利网站怎么做
  • c s网站开发模式南京微信网站建设哪家好
  • 玉环市建设局网站推荐大气的网站
  • 网站可以用什么语言开发做平价建网站
  • 深圳网站seo关键词广州做网站价格
  • 小型企业网站如何建设房子设计图软件app免费
  • 服装销售网站设计与制作嘉兴网站开发选哪家
  • 制作网站数据库招标网站平台有哪些
  • 企业网站建设合作协议书网络建设公司经营范围
  • 长沙银行网站建设国防教育网站建设说明书
  • 重庆金融公司网站建设济南自适应网站建设
  • 什么样的网站好优化设计联盟
  • wordpress资源购买插件沈阳专业seo排名优化公司
  • 商洛市住户和城乡建设局网站信息价给公司做网站 图片倾权
  • 深圳网站建站建设公司地址软件开发和研发的区别
  • 桂林市工程建设项目招标网站网站的底部设计
  • 宜昌市建设监理协会网站鞍山做网站团队
  • wordpress 相邻文章兰州关键词优化排名