小程序自定义TabBar后如何实现keep-alive | 小程序不支持vue路由的keep-alive
uniapp的keep-alive
只支持H5,所以,我们应该实现页面缓存呢
实现思路
1.在tab
每个选项增加两个值:v-if
和v-show
,if
控制组件是否需要渲染,show
控制组件display
2.初始化时候设置首页的if``true
,其它都为false
;show
根据页面索引动态显示
3.当我们切换时:把上一个tab
页面的show
改为false
,然后把当前要切换页面的tab
数据中的v-if
和v-show
都变为true
注意:每个页面的v-if
只改变一次,只有初次加载页面
的时候,从false
设置为true
后就不会改变
示例
<!-- 只做示范,不能直接复制运行 -->
<template>
<view>
<mhome v-if="tar[0]" v-show="index=='0'" ></mhome>
<punchcard v-if="tar[1]" v-show="index=='1'"></punchcard>
<navigation v-if="tar[2]" v-show="index=='2'"></navigation>
<mycenter v-if="tar[3]" v-show="index=='3'"></mycenter>
<u-tabbar :value="index" @change="change">
<u-tabbar-item name="0" text="首页" icon="home"></u-tabbar-item>
<u-tabbar-item name="1" text="打卡" icon="map"></u-tabbar-item>
<u-tabbar-item name="2" text="导航" icon="hourglass"></u-tabbar-item>
<u-tabbar-item name="3" text="我的" icon="account"></u-tabbar-item>
</u-tabbar>
</view>
</template>
<script>
import ... // 略
export default {
data() {
return {
index: "0",
tar:[true,false,false,false]
}
},
components: {
mhome,
mycenter,
punchcard,
navigation,
},
methods: {
change(e) {
// 这里e是页面索引,返回来的是字符串类型的
this.index = e;
this.tar[parseInt(e)]=true;
}
}
}
</script>
效果展示
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!