首页 > 编程语言 >微信小程序--自定义tabbar切换页面时,保留数据方案

微信小程序--自定义tabbar切换页面时,保留数据方案

时间:2023-11-14 10:15:27浏览次数:45  
标签:arr 自定义 -- 微信 app isShow tabbar 数据 页面

自定义的tabbar组件,每次切换页面时都会重新加载页面和数据,需要通过一些方法把tabbar菜单的数据保留下来,不要每次都请求数据。

方案一:在app.js文件里定义全局数据(本次项目采用的是可以在后台管理里配置的数据,所以采用了方案一)

1、在app.js文件里定义一个全局变量

App({   globalData: {   tabbarlist:{}  } }) 2、在tabbar组件的js文件获取app.js保留的数据 const app = getApp(); Component({ ready() {    //将保留数据赋值给tabbar的list     this.setData({       list:app.globalData.decorateTabbar     })   如果是第一次加载,保留的数据是空的,则需要请求接口获取数据     if (!isEmpty(app.globalData.decorateTabbar)) this.getDecorateData();   }, methods: { getDecorateData() {       getshopDecorate().then(({ data }) => {   //处理数据         let arr = data.find((element) => {           return element.isShow && element.type == "tabbar";         });         arr.ext = JSON.parse(arr.ext);         let arr2 = arr.ext.filter((ele) => {           if (ele.isShow) return ele;         });   给当前页面的list和保留的数据赋值
        if (!isEmpty(app.globalData.decorateTabbar)) {           this.setData({             list: { isShow: arr.isShow, ext: arr2 },           });         }         app.globalData.decorateTabbar = { isShow: arr.isShow, ext: arr2 };       });     }, } )}  
方案二:使用缓存机制(如果tabbar的数据一旦定义就不在变动,可以采用这种方案)
wx.setStorageSync('someData', 'Hello World');//在获取到数据时存储到缓存里 var someData = wx.getStorageSync('someData'); console.log(someData); // 输出:Hello World   //切换再进入页面时,从缓存种读取数据  
方案三:使用组件通信,

当 TabBar 切换页面时,通过自定义事件或消息订阅机制,将数据传递给目标页面。

1、在目标页面中监听事件或订阅消息,并在相应的回调函数中处理数据:

Page({ onl oad: function() { var that = this; wx.onAppShow(function(data) { console.log(data); // 输出:Hello World that.setData({ someData: data }); }); } });
2、在切换页面时,触发相应的事件或发布消息,并将数据传递给目标页面:

wx.onTabItemTap(function(item) { wx.triggerEvent('onAppShow', 'Hello World'); })

标签:arr,自定义,--,微信,app,isShow,tabbar,数据,页面
From: https://www.cnblogs.com/meiyanstar/p/17830953.html

相关文章

  • windows基本实用命令以及相关炫酷操作
    记录一下windows常用的命令,以及一些炫酷的操作文件操作dir:查看当前目录下的文件,查看隐藏文件dir/atree:使用树形查看当前目录下的文件和文件夹,以及子目录中的文件和文件夹cd目录名:进入指定目录copycon文件名:在屏幕输入内容,最后输入Ctrl+Z,将文件保存到文件名中type......
  • python tab vim
    1.unindentdoesnotmatchanyouterindentationlevel原因是文件中包含了tab和空格的混合解决方法:全部使用空格。将tabstop和shiftwidth设置成相同的值,如4,并设置expandtab。这样新增的缩进会用空格,你按下tab键,出来的也全是空格。如果文件里本来就有tab的话,可以再用......
  • 零基础快速上手STM32开发(手把手保姆级教程)
    零基础快速上手STM32开发(手把手保姆级教程)1.前言作为一名嵌入式工程师,STM32是必须要学习的一款单片机,同时这款单片机资料足够多,而且比较简单,非常适合初学者入门。STM32是一款由STMicroelectronics公司开发的32位微控制器,由于其强大的处理能力和广泛的应用领域,如嵌入式系......
  • 使用Bert模型实现embedding嵌入
    参考文献:保姆级教程,用PyTorch和BERT进行文本分类-知乎(zhihu.com)模型地址:https://huggingface.co/bert-base-casedfromtransformersimportBertTokenizer,BertModeltokenizer=BertTokenizer.from_pretrained('bert-base-cased')model=BertModel.from_pretrained("......
  • 界面控件DevExpress WPF Splash Screen,让应用启动画面更酷炫!
    DevExpressWPF的SplashScreen组件可以为应用程序创建十分酷炫的启动屏幕,提高用户在漫长的启动操作期间的体验!P.S:DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用......
  • 十二、触发器
    一、什么是触发器?触发器(trigger)是SQLserver提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作(insert,delete,update)时就会激活它执行。触发器经常用于加强数......
  • 十三、自定义类型
    用户定义数据类型通俗定义:用户自己设计并实现的数据类型就称为用户自定义数据类型,即使这些数据类型基于系统数据类型。也可以理解为基础类型的一个延伸。用户定义数据类型三要素:1.数据类型的名称2.所基于的系统数据类型3.数据类型的可空性(是否可以为空)USE[Advanc......
  • Nacos共享配置(shared-configs)和扩展配(extension-config)
    原文地址:https://www.jianshu.com/p/8715072d3f4c一、共享配置(shared-configs)和扩展配(extension-config)日常开发中,多个模块可能会有很多共用的配置,比如数据库连接信息,Redis连接信息,RabbitMQ连接信息,监控配置等等。那么此时,我们就希望可以加载多个配置,多个项目共享同一个......
  • python连接数据库导入excel查询结果
    下面是主要代码部分 #安装包pymysql,excel导入模块importpymysql#安装sql连接库模块importpandasaspd#安装excel导入模块#连接数据库conn=pymysql.connect(  host='cs-cn',#连接地址  port=4037,            #连接端口  ......
  • Mac Os VS Code 无法升级Cannot update while running on a read-only volume.
    macOSVSCode无法升级,提示“Cannotupdatewhilerunningonaread-onlyvolume“错误提示错误如下:Cannotupdatewhilerunningonaread-onlyvolume.Theapplicationisonaread-onlyvolume.Pleasemovetheapplicationandtryagain.Ifyou’reonmacOSSierr......