微信小程序开发 tabbar组件常见问题

一、 tabbar不显示问题

问题

刚开始我在app.json中配置了下面的代码,但tabbar并没有显示。代码如下:

"tabBar": {
    "custom": true,
    "color": "#7A7E83",
    "selectedColor": "#3cc51f",
    "borderStyle": "black",
    "backgroundColor": "#ffffff",
    "list": [
      {
        "pagePath": "pages/tPages/tPage1",
        "text": "首页"
      },
      {
        "pagePath": "pages/tPages/tPage2",
        "text": "我的"
      }
    ]
  }

通过官方文档了解到,可以通过自定义组件来实现自定义tabbar(微信小程序官方文档)

解决

仿照官网提供的例子对比看自己的问题在哪里
参考官方文档,我对程序做出了如下调整:

  1. 首先在项目的根目录下添加了custom-tab-bar文件夹,在此文件夹下新增了一个组件。
    在这里插入图片描述
    【js代码如下】

Component({

  /**
   * 组件的属性列表
   */
  properties: {

  },

  /**
   * 组件的初始数据
   */
  data: {
    selected: 10,
    color: "#7A7E83",
    selectedColor: "#3cc51f",
    list: [
      {
        "pagePath": "pages/tPages/tPage1",
        "text": "首页"
      },
      {
        "pagePath": "pages/tPages/tPage2",
        "text": "我的"
      }
    ]
  },
  attached() {
  },
  /**
   * 组件的方法列表
   */
  methods: {
    switchTab(e) {
      const data = e.currentTarget.dataset
      const iUrl = data.path
      console.log('/'+iUrl)
      wx.switchTab({
        url: '/'+iUrl,
        success: function (e) {
          var page = getCurrentPages().pop();
          if (page == undefined || page == null) return;
          page.onLoad();
        }
      })
      this.setData({
        selected: data.index
      })
    }
  }
})

【wxml代码如下】

<view class="tab-bar">
  <view class="tab-bar-border"></view>
  <view wx:for="{{list}}" wx:key="index" class="tab-bar-item" data-path="{{item.pagePath}}" data-index="{{index}}" bindtap="switchTab">
  <view>{{selected}}</view>
    <view style="color: {{selected === index ? selectedColor : color}}">{{index}}-{{item.text}}-{{item.pagePath}}</view>
  </view>
</view>

【json代码如下】

{
  "component": true
}

【wxss代码如下】

.tab-bar {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  height: 48px;
  background: white;
  display: flex;
  padding-bottom: env(safe-area-inset-bottom);
}

.tab-bar-border {
  background-color: rgba(0, 0, 0, 0.33);
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 1px;
  transform: scaleY(0.5);
}

.tab-bar-item {
  flex: 1;
  text-align: center;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
}

.tab-bar-item image {
  width: 27px;
  height: 27px;
}

.tab-bar-item view {
  font-size: 10px;
}

  1. 在pages文件夹下新建一个文件夹放你的tab相关的各类文件。这里我主要是新建了两个组件,也就是我需要在tabbar里显示的内容。(这步我本来就做好了,如果你的tabbar不显示可以对比看看是不是哪里配置错了)
    两个组件差不多,这里就记录一个吧。
    【js代码如下】
// tPage1.js
Component({
  pageLifetimes: {
    show() {
      if ( typeof this.getTabBar === 'function'&& this.getTabBar() ){ 
          this.getTabBar().setData({ selected: 0 })
      }
    }
   }
})

【json代码如下】

{
  "usingComponents": {}
}

【wxml代码如下】

<scroll-view class="scrollarea" scroll-y type="list">
  <view class="container">
    这里是第一个页面!
  </view>
</scroll-view>

【wxss无代码】

  1. 最后检查app.json中的配置
    ※ pages中是否将所有的tab页面配置完整,保证无遗漏
    ※ tabBar的配置需要添加custom配置为true
    ※ tabBar中list里面的pagePath一定不要配错了!
{
  "pages": [
    "pages/tPages/tPage1",
    "pages/tPages/tPage2"
  ],
  "window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "WeChat",
    "navigationBarTextStyle":"black"
  },
  "tabBar": {
    "custom": true,
    "color": "#7A7E83",
    "selectedColor": "#3cc51f",
    "borderStyle": "black",
    "backgroundColor": "#ffffff",
    "list": [
      {
        "pagePath": "pages/tPages/tPage1",
        "text": "首页"
      },
      {
        "pagePath": "pages/tPages/tPage2",
        "text": "我的"
      }
    ]
  }
}

二、 tabbar切换无法刷新问题

可以尝试在tab-bar组件js的切换tab的函数里添加page.onLoad()来刷新页面。
在这里插入图片描述如果此时还是不能刷新,有可能是路径出现了问题,打印路径看一下目标路径开头是否有个“/”。因为我的url是没有“/”的,所以自己补充了一个,页面就成功刷新啦!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/637487.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

宠物空气净化器性价比大对决:小米、希喂、华为测评哪款最好用

在养宠的过程中中&#xff0c;我们经常会面对一些挑战&#xff0c;其中最为常见且令人困扰的就是宠物的掉毛问题。家中的猫猫们仿佛行走的大型蒲公英&#xff0c;不经意间就将毛发散落在各个角落&#xff0c;无论是家居摆设、舒适的沙发&#xff0c;还是我们心爱的衣物&#xf…

基于网络爬虫技术的网络新闻分析(四)

目录 4.2 系统异常处理 4.2.1 爬虫异常总体概况 4.2.2 爬虫访问网页被拒绝 5 软件测试 5.1 白盒测试 5.1.1 爬虫系统测试结果 5.1.2 中文分词系统测试结果 5.1.3 中文文章相似度匹配系统测试结果 5.1.4 相似新闻趋势展示系统测试结果 5.2 黑盒测试 5.2.1 爬虫系统测…

CTF实战分享 | RWZIP

前言 首先我们要了解&#xff0c;压缩包本身并不具备隐藏信息的功能&#xff0c;但由于在CTF竞赛中&#xff0c;经常出现压缩包与隐写术结合在一起的题目&#xff0c;所以我们需要掌握在CTF竞赛中有关 ZIP 压缩包题目的常见题型及分析手段。 读者福利 | CSDN大礼包&#xff1a…

Python面向对象数据库之ZODB使用详解

概要 ZODB(Zope Object Database)是一个纯Python的面向对象数据库。它允许程序员将Python对象以透明的方式存储在数据库中,无需将对象模型转换为关系模型,极大地简化了Python应用的数据持久化工作。 安装 安装ZODB非常简单,可以通过Python的包管理器pip进行安装: pip …

2024电工杯数学建模B题Python代码+结果表数据教学

2024电工杯B题保姆级分析完整思路代码数据教学 B题题目&#xff1a;大学生平衡膳食食谱的优化设计及评价 以下仅展示部分&#xff0c;完整版看文末的文章 import pandas as pd df1 pd.read_excel(附件1&#xff1a;1名男大学生的一日食谱.xlsx) df1# 获取所有工作表名称 e…

Android 屏保开关

设置-显示-屏保&#xff0c; 打开关闭 设置代码在 ./packages/apps/Settings/src/com/android/settings/dream/DreamMainSwitchPreferenceController.java &#xff0c; Overridepublic boolean isChecked() {return mBackend.isEnabled();}Overridepublic boolean setChecke…

K8S中Prometheus+Grafana监控

1.介绍 phometheus:当前一套非常流行的开源监控和报警系统。 运行原理&#xff1a;通过HTTP协议周期性抓取被监控组件的状态。输出被监控组件信息的HTTP接口称为exporter。 常用组件大部分都有exporter可以直接使用&#xff0c;比如haproxy,nginx&#xff0c;Mysql,Linux系统信…

实例展示vue单元测试及难题解惑

通过生动详实的例子带你排遍vue单元测试过程中的所有疑惑与难题。 技术栈&#xff1a;jest、vue-test-utils。 共四个部分&#xff1a;运行时、Mock、Stub、Configuring和CLI。 运行时 在跑测试用例时&#xff0c;大家的第一个绊脚石肯定是各种undifned报错。 解决这些报错…

网络协议测试仪设计方案:474-便携式手提万兆网络协议测试仪

便携式手提万兆网络协议测试仪 一、平台简介 便携式手提万兆网络协议测试仪&#xff0c;以FPGA万兆卡和X86主板为基础&#xff0c;构建便携式的手提设备。 FPGA万兆卡是以Kintex-7XC7K325T PCIeX4的双路万兆光纤网络卡&#xff0c;支持万兆网络数据的收发和网络协议…

同旺科技 FLUKE ADPT 隔离版发布 ---- 3

所需设备&#xff1a; 1、FLUKE ADPT 隔离版 内附链接&#xff1b; 应用于&#xff1a;福禄克Fluke 12E / 15BMax / 17B Max / 101 / 106 / 107 应用于&#xff1a;福禄克Fluke 15B / 17B / 18B 总体连接&#xff1a; 连接线&#xff0c;根据自己实际需求而定&#xff1b; …

java操作Redis缓存设置过期时间

如何用java操作Redis缓存设置过期时间&#xff1f;很多新手对此不是很清楚&#xff0c;为了帮助大家解决这个难题&#xff0c;下面小编将为大家详细讲解&#xff0c;有这方面需求的人可以来学习下&#xff0c;希望你能有所收获。 在应用中我们会需要使用redis设置过期时间&…

WPS PPT学习笔记 1 排版4原则等基本技巧整理

排版原则 PPT的排版需要满足4原则&#xff1a;密性、对齐、重复和对比4个基本原则。 亲密性 彼此相关的元素应该靠近&#xff0c;成为一个视觉单位&#xff0c;减少混乱&#xff0c;形成清晰的结构。 两端对齐&#xff0c;1.5倍行距 在本例中&#xff0c;19年放左边&#x…

融资融券利率4.0%!融资融券保证金比例和余额

融资融券利率最低是4.0%~5.0%&#xff0c;这是目前市场最低的利率水平&#xff0c;股票佣金万一。 各家券商的利率差异是较大的&#xff0c;现在无门槛利率是5%&#xff0c;根据投资者的资金量大小在4.0%~5%之间浮动&#xff0c;具体需要通过对应证券经理协商办理&#xff01;…

C++_vector操作使用

文章目录 &#x1f680;1.1 vector介绍&#x1f680;1.2 vector的初始化&#x1f680;1.3 vector的常用内置函数&#x1f680;1.4 vector的遍历 &#x1f680;1.1 vector介绍 vector是表示可变大小数组的序列容器。就像数组一样&#xff0c;vector也采用的连续存储空间来存储元…

什么是线程安全?如何保证线程安全?

目录 一、引入线程安全 &#x1f447; 二、 线程安全&#x1f447; 1、线程安全概念 &#x1f50d; 2、线程不安全的原因 &#x1f50d; 抢占式执行&#xff08;罪魁祸首&#xff0c;万恶之源&#xff09;导致了线程之间的调度是“随机的” 多个线程修改同一个变量 修改…

Java代码审计-XSS审计

一、漏洞简介 XSS是Cross Site Scripting的缩写&#xff0c;意为"跨站脚本攻击"&#xff0c;为了避免与层叠样式表(Cascading Style Sheet&#xff0c;CSS)的缩写混淆&#xff0c;故将跨站脚本攻击缩写为XSS。XSS是一种针对网站应用程序的安全漏洞攻击技术&#xff…

线上申请流量卡一些必知的小知识,愿每个人都能刷到!

很多朋友都想办理一张大流量卡&#xff0c;但是又怕被套路&#xff0c;一时不知道该怎么选择&#xff0c;那个纠结啊。 今天&#xff0c;小编用自己多年的行业经验给大家整理了一些办卡攻略&#xff0c;希望能帮助大家选到适合自己的流量卡。 ​1、有的流量卡都是免费申请&…

使用JavaScript日历小部件和DHTMLX Gantt的应用场景(三)

DHTMLX Suite UI 组件库允许您更快地构建跨平台、跨浏览器 Web 和移动应用程序。它包括一组丰富的即用式 HTML5 组件&#xff0c;这些组件可以轻松组合到单个应用程序界面中。 DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表&#xff0c;可满足项目管理应用…

了解 Linux 网络卡绑定:提高网络性能与冗余性

在现代 IT 基础设施中&#xff0c;网络性能和可靠性至关重要。对于许多企业和个人用户来说&#xff0c;确保网络的高可用性和冗余性是首要任务之一。Linux 提供了一个强大的解决方案——网络卡绑定&#xff08;Network Interface Card Bonding&#xff0c;简称 NIC Bonding&…

DevExpress Office File API中文教程 - 如何用OpenAI模型增强Office文档可访问性?

DevExpress Office File API是一个专为C#, VB.NET 和 ASP.NET等开发人员提供的非可视化.NET库。有了这个库&#xff0c;不用安装Microsoft Office&#xff0c;就可以完全自动处理Excel、Word等文档。开发人员使用一个非常易于操作的API就可以生成XLS, XLSx, DOC, DOCx, RTF, CS…