【新功能介绍】自定义tabBar功能来了!

简介: 【新功能介绍】自定义tabBar功能来了!

常有开发者在社区提问,何时支持底部tabBar自定义编写,而非简单的修改样式。现在,自定义tabBar功能它来了!本期我们邀请到来自支付宝小程序框架团队的元凛,由他来介绍小程序自定义tabBar功能,以及与该功能一起在IDE 3.1.2 beta版上线的两个新配置项:app.usingComponents,entryPagePath。

怎么使用自定义tabBar

元凛:原始的tabBar比较直观、朴素和易用,但不支持位置、样式的调整,只能更换颜色和icon,没办法体现小程序自己的设计理念和特殊应用场景。
过去有开发者会单独起一个首页,然后把tabBar的页面抽成组件在首页里引入,变相实现了自定义tabBar功能。现在,在IDE 3.1.2 beta版,我们开始支持自定义tabBar能力,接入也很简单,一共需要3步:

Step1: 在现有 tabBar 配置基础上新增customize字段。


Step2:约定在代码根目录下添加 tabBar 入口文件。


Step3:编写对应的tabBar 代码,编码规范可查看 自定义组件。该自定义组件将完全接管 tabBar 的渲染及交互,同时,新增 getTabBar 接口可获取自定义 tabBar 组件实例。
customize-tab-bar/index.axml
ustomize-tab-bar/index.js

Component({
  data: {
    selected: 0,
    textColor: "#7A7E83",
    selectedColor: "#2f54eb",
    list: [
      {
        pagePath: "/pages/index/index",
        name: "customize1",
      },
      {
        pagePath: "/pages/index2/index",
        name: "customize2",
      },
    ],
  },
  methods: {
    tap(e) {
      const data = e.target.dataset;
      my.switchTab({
        url: data.value.pagePath,
      });
    },
  },
})

pages/index/index.js

Page({
  onShow() {
    if (typeof this.getTabBar === 'function' && this.getTabBar()) {
      this.getTabBar().setData({
        selected: 0,
      });
    }
  },
})


这样,就能实现小程序tabBar的自定义,像导航栏中间按钮突出这一类常见的产品需求,也能得到满足。注意,自定义tabBar的使用要求是:
• 基础库 2.7.20 及以上版本。
• 支付宝客户端 10.2.63 及以上版本。
• 小程序开发者工具 3.1.2 及以上版本。
若你的开发版本较低,则显示原始 tabBar样式。

从声明一百次到一次

此外,在IDE3.1.2 Beta版,我们还新增了 app.usingComponents的页面配置。之前,如果小程序使用了自定义组件,那么就需要在页面上定义一下,当小程序页面过多,超过100个,就需要定义100次,比较繁琐。

现在,我们支持了app.usingComponents,在app.json中生命的自定义组件会被认为是全局自定义组件,哪怕你有上百个页面,也只在要在app.json中写一次即可。但要注意该功能声明的组件将要被所有页面和组件依赖,可能会影响性能,且会占用主包大小,建议开启 app.lazyCodeLoading,即代码懒加载模式。

app.json

{
  "usingComponents": {
    "com1": "/components/com1/index",
    "com2": "./components/com2/index"
  }
}


指定默认启动首页

一般情况下,我们会在app.json中的pages里定义好所有页面,并且默认把数组中的第一项代表小程序的初始页面,也就是首页。但在某些场景中,我们需要手动指定某个页面为启动首页。

这时候entryPagePath就派上了用场,通过在app.json里添加entryPagePath,就可以指定默认启动首页。需要注意的是,此特性从基础库 2.7.20,IDE 3.1.2 开始支持。若强依赖此特性,建议设置最低基础库版本号为2.7.20。否则,在低版本的基础库,会因为无法识别正确的首页而导致渲染异常。

{
  "entryPagePath": "pages/index/index"
}


目录
相关文章
|
Ubuntu 关系型数据库 MySQL
ubuntu 18.04安装hdp 3.1.0最新完整版(含安装包)
hdp平台提供centos、ubuntu等平台的安装与使用,本文以ubuntu 18.04操作系统为基础,介绍hdp3.1.0在该平台上的安装与配置,并提供安装包下载,手把手教您搭建属于您的大数据平台。
ubuntu 18.04安装hdp 3.1.0最新完整版(含安装包)
icp网站备案查询【域名备案批量扫描工具】
昨晚去姨妈家的时候,姐的同事说姨妈也在做域名业务。正因为批量挖掘备案域名的问题哭丧着脸。
icp网站备案查询【域名备案批量扫描工具】
|
存储 JavaScript API
vue,uniapp生成二维码
vue,uniapp生成二维码
|
编译器 开发工具 Android开发
Android 引入FFmpeg
Android 引入FFmpeg
615 0
|
JSON 自然语言处理 Kubernetes
MindIE PD分离部署Q&A
使用mindie进行PD分离部署
1005 28
|
人工智能 数据可视化 数据挖掘
20款低代码开发平台哪个才是适合你的?
本文是个人了解和体验后所写,仅供个人参考,不代表多数人的意见,另产品功能和其他信息请以官方最新信息为准。本文没有任何夹带私货,插入广告的嫌疑。
|
JavaScript 前端开发 索引
JavaScript 数组方法 slice() 的 5 个示例
slice() 方法将数组部分的副本返回到新的数组对象中。这个对象是从 start 到 end 选择的。需要注意的是,此方法不会修改原始数组。此外,如果向其中一个数组添加新元素,则另一个数组不会受到影响。
1026 0
JavaScript 数组方法 slice() 的 5 个示例
|
内存技术
nvm的使用
nvm的使用
|
关系型数据库 MySQL 网络安全
Typecho 入门指南:个人博客网站保姆级攻略!
Typecho是一款轻量级开源博客系统,基于PHP+MySQL/SQLite构建,专注于为内容创作者提供简洁、快速的博客搭建体验。其支持多用户管理、Markdown编辑、伪静态SEO优化等功能,适合个人和技术博客使用。本文详细介绍了通过宝塔面板快速部署Typecho的方法,包括运行环境配置、源码上传与安装、SSL设置等步骤,帮助用户在10分钟内完成博客搭建,实现高效极简的内容创作与分享。
1358 0
|
设计模式 缓存 前端开发
React中样式解决方案有哪些?
本文首发于微信公众号“前端徐徐”,探讨了React开发中的样式管理方法,包括内联样式、常规CSS、CSS-Module、CSS-in-JS及使用CSS框架等五种常见方案,分析了各自的优缺点,帮助开发者根据项目需求选择合适的样式解决方案。
723 0

热门文章

最新文章