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

手机网站制作推广定制php网站视频代码

手机网站制作推广定制,php网站视频代码,包头市住房与城乡建设部网站,厦门国外网站建设公司排名方案 1:正确配置 keep-alive keep-alive 是一个内置组件,它能对组件实例进行缓存,避免重复创建和销毁组件,进而提升应用性能 使用场景 频繁切换的组件:当在多个组件间频繁切换时,若不使用 keep-alive&am…

方案 1:正确配置 keep-alive

keep-alive 是一个内置组件,它能对组件实例进行缓存,避免重复创建和销毁组件,进而提升应用性能

使用场景

  • 频繁切换的组件:当在多个组件间频繁切换时,若不使用 keep-alive,每次切换都会重新创建组件实例,会消耗较多性能。使用 keep-alive 后,组件实例会被缓存,再次切换时直接从缓存中获取,无需重新创建。
  • 需要保留状态的组件:有些组件在切换出去后,需要保留之前的状态,比如滚动位置、输入框内容等。使用 keep-alive 可以让组件状态得以保留。

使用方法

1. 包裹路由组件(缓存路由组件)

若要对路由组件进行缓存,可在 App.vue 里用 keep-alive 包裹 router-view 组件。

app.vue


<script setup>
import { RouterLink, RouterView } from 'vue-router'
</script><template><router-view v-slot="{ Component }"><keep-alive><component :is="Component" /></keep-alive></router-view></template><style scoped></style>
2. 包裹普通组件(缓存动态组件)

若要对普通组件进行缓存,可直接用 keep-alive 包裹该组件。

代码:

keepalive/index.vue

<template><el-button @click="()=>this.iscomponent='A'">切换A</el-button><el-button @click="()=>this.iscomponent='B'">切换B</el-button><keep-alive><component :is="iscomponent"></component></keep-alive>
</template>
<script>
import A from "./components/A.vue"
import B from "./components/B.vue"
export default {components: {A,B},data(){return {iscomponent:'A'}}
}
</script>

 keepalive/components/A.vue

<template>姓名:<input/>
</template>

  keepalive/components/B.vue

<template>年龄:<input/>
</template>

效果:

 

3. 结合 include 和 exclude 属性

include 和 exclude 属性可用于指定哪些组件需要被缓存或者哪些组件不需要被缓存。这两个属性的值可以是字符串、正则表达式或者数组。

app.vue

<script setup>
import { RouterLink, RouterView } from 'vue-router'
</script><template><router-view v-slot="{ Component }"><keep-alive include="KeepAliveRouter"><component :is="Component" /></keep-alive></router-view>
</template><style scoped></style>

 router.js

 {path: '/keepaliverouter',name: 'KeepAliveRouter',component: ()=>import('@/views/keepaliverouter/index.vue'),},

相关生命周期钩子

当组件被 keep-alive 缓存时,其 createdmounted 等生命周期钩子只会在第一次创建时执行,之后从缓存中获取组件实例时不会再次执行。不过,会新增 activated 和 deactivated 两个生命周期钩子。

  • activated:组件被激活时调用,也就是从缓存中取出组件并显示时调用。
  • deactivated:组件被停用(放入缓存)时调用。
<template><div>这是一个被缓存的组件</div>
</template><script>
export default {name: 'CachedComponent',activated() {console.log('组件被激活');},deactivated() {console.log('组件被停用');}
};
</script>

注意事项

  • 组件 name 属性:使用 include 和 exclude 属性时,要确保组件的 name 属性已正确设置,因为这两个属性是依据组件的 name 来进行匹配的。
  • 内存占用:尽管 keep-alive 能提升性能,但过多使用可能会增加内存占用,所以要合理使用。

方案 2:结合 Vuex 状态管理

定义 Store: 

// store/form.js
export default {state: {formData: {}},mutations: {SAVE_FORM_DATA(state, data) {state.formData = data;}}
};

 在组件中使用

<script>
export default {computed: {...mapState(['formData'])},methods: {...mapMutations(['SAVE_FORM_DATA'])}
}
</script>

方案 3:本地存储备份

// 保存数据到 localStorage
localStorage.setItem('formData', JSON.stringify(this.formData));// 从 localStorage 恢复数据
const savedData = localStorage.getItem('formData');
if (savedData) {this.formData = JSON.parse(savedData);
}

完整代码示例

vue

<!-- FormPage.vue -->
<template><form><input v-model="formData.name" placeholder="姓名"><input v-model="formData.email" placeholder="邮箱"><button @click="submit">提交</button></form>
</template><script>
import { mapState, mapMutations } from 'vuex';export default {name: 'FormPage',data() {return {formData: {}};},activated() {// 优先从 Vuex 恢复数据if (this.formData) return;// 从 localStorage 备份恢复const savedData = localStorage.getItem('formData');if (savedData) {this.formData = JSON.parse(savedData);}},deactivated() {this.SAVE_FORM_DATA(this.formData);localStorage.setItem('formData', JSON.stringify(this.formData));},computed: {...mapState(['formData'])},methods: {...mapMutations(['SAVE_FORM_DATA']),submit() {// 提交逻辑console.log('提交数据:', this.formData);// 提交后清空缓存(可选)this.SAVE_FORM_DATA({});localStorage.removeItem('formData');}}
};
</script>

提交表单后,通过 localStorage.removeItem 或 Vuex 清空数据,避免下次进入页面时显示旧数据。

方案对比

方案优点缺点适用场景
keep-alive简单易用,自动缓存依赖组件 name,无法持久化短期缓存(不关闭页面)
Vuex + keep-alive数据全局共享,支持持久化需额外配置 Vuex复杂状态管理
本地存储数据持久化,支持跨页面 / 重启数据可能过时,需手动清理需要长期保存数据
http://www.dtcms.com/wzjs/534993.html

相关文章:

  • 昆明做公司网站青岛网站设计案例
  • 做网站要什么资质山西手机版建站系统信息
  • 建手机网站公司网站建设高
  • 2网站制作莱芜网站建设与管理
  • 万峰科技著.asp.net网站开发四酷全书电子工业出版社怎么样才能引流客人进店
  • 网站反向代理怎么做实训做网站收获
  • 北京网站设计公司sx成都柚米科技15做礼品建什么网站
  • 株洲网站制作公司阿里云服务器如何实现一个空间绑定两个不同主体的网站
  • 佛山网站建设的市场西安网站备案
  • 做企业网站专用词开发wap网站 转
  • 仙居网站建设贴吧中国化工建设网站
  • 网站建设优化的书籍模板建站seo优化
  • 网站推广的方法ppt深圳营销型网站制作
  • 洛阳霞光建设网站seo手机端排名软件
  • 建立一个企业网站司局网站维护廉政风险建设
  • 如何推广自己的网站建设网站流程
  • 招聘网站建设费用多少凡科怎么建设网站
  • 饶平网站建设公司高端品牌发布会
  • 徐州网站客户做婚礼设计在哪个网站下载素材
  • 网易网站开发语言直播网站建设开发
  • 现在还有企业做网站的吗哪些国家网站无须备案
  • 禅城建设网站做公众号微网站
  • 电商网站建设收费网站优化的主要目的是什么
  • 做的好的商城网站设计怎么在天猫注册开店铺
  • 贡井移动网站建设湖北省网站备案最快几天
  • 招聘网58同城招聘发布新手怎么做seo
  • 聊城做网站建设网页设计项目模板代码
  • 商城网站的管理用户模块网站建设自查及整改报告
  • 赣州做网站多少钱企业品牌vi设计
  • 山西响应式网站设计桂林学校网站制作