文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

taro之--微信自定义tabbar

2023-09-02 06:47

关注

微信小程序自定义 Tabbar

Taro 支持使用 React、Vue、或者小程序原生语法来编写小程序自定义 TabBar 组件。

示例项目

如何使用

配置方法和微信小程序相同,开发前请仔细阅读 《微信小程序自定义 TabBar 文档》

配置信息

示例:

app.config.js

export default {  tabBar: {    custom: true,    color: '#000000',    selectedColor: '#000000',    backgroundColor: '#000000',    list: [      {        pagePath: 'page/component/index',        text: '组件',      },      {        pagePath: 'page/API/index',        text: '接口',      },    ],  },}

page/component/index.config.js

export default {  navigationBarTitleText: '组件页',  usingComponents: {},}

page/API/index.config.js

export default {  navigationBarTitleText: '接口页',  usingComponents: {},}

添加 custom-tab-bar

src 目录下添加 custom-tab-bar 目录,在里面书写组件,支持 React、Vue 和原生写法。

React:

├── config├── src|   └── custom-tab-bar|       ├── index.json.js|       └── index.jsx└── package.json

Vue:

├── config├── src|   └── custom-tab-bar|       ├── index.json.js|       └── index.vue└── package.json

原生写法:

├── config├── src|   └── custom-tab-bar|       ├── index.js|       ├── index.json|       ├── index.wxss|       └── index.wxml└── package.json

图片资源引用

使用 React/Vue 开发自定义 TabBar 时,可以不使用 import 或 require 引用图片资源(Taro 会自动根据 TabBar 配置处理)。

如果使用了 import、require 或使用 background-image 时需要关注图片是否被 url-loader 处理为 base64,base64 的图片在 TabBar 中不能展示。

状态管理

默认 TabBar 与自定义 TabBar 的最大不同点在于,默认 TabBar 在所有 TabBar 页共享一个组件实例,而自定义 TabBar 在各个 TabBar 页面初始化时都会创建一个新的组件实例

也就是说各个 TabBar 页内的自定义 TabBar 组件实例的状态是不共享的。因此对 TabBar 的状态管理(例如 selected 选中态)则尤为重要。

对于不同写法的自定义 TabBar,Taro 提供了不同的状态管理方案:

1. 原生写法

微信小程序原生写法推荐使用 getTabBar 方法进行管理,如果你的自定义组件是使用原生写法编写的,那么可以参考小程序官方提供的示例

唯一需要注意的是,在小程序原生页面是调用 this.getTabBar,但 Taro 的页面是 React/Vue 组件,this 指向的并不是原生页面对象。因此需要先获取原生页面对象再进行调用:

// 页面 onShow 时Taro.getCurrentInstance().page.getTabBar()

2. React / Vue

React 和 Vue 推荐使用状态管理工具(Redux、Vuex 等)对 TabBar 页的状态进行管理。优点在于无须侵入各个 TabBar 页面的代码,逻辑可以归集在 TabBar 组件中。

如果开发者不希望使用状态管理工具,Taro 提供了 Taro.getTabBar API 以获取自定义 TabBar 组件(React/Vue 组件),然后开发者可以调用它上面的方法去更新 TabBar 组件的状态。

// 页面 onShow 时const pageObj = Taro.getCurrentInstance().pageconst tabbar = Taro.getTabBar(pageObj)
示例项目 中提供了两个例子,React 版本的例子展示了如何使用 Taro.getTabBar 管理状态,Vue3 版本的例子则展示了如何使用状态管理工具来管理状态。

组件配置项

自定义 TabBar 组件使用小程序的 Component 构造器构造,开发者在处理样式隔离等问题时可以需要对 Component 进行配置。这时开发者可以给 React/Vue 编写的自定义组件这些配置项属性,Taro 会把它们放置到 Component 构造对象上,目前支持:options、externalClasses、behaviors。

例子:

示例代码

// Class Componentclass CustomTabBar extends Component {  static options = {    addGlobalClass: true,  }}// Functional Componentfunction CustomTabBar() {}CustomTabBar.options = {  addGlobalClass: true,}

常见问题

闪烁问题

第一次加载 TabBar 页时 TabBar 会闪烁

自定义 TabBar 在各个 TabBar 页面初始化时都会创建一个新的组件实例导致。可以到微信小程序开发者社区寻找相关解决方案。

切换 Tab 时图片闪烁

尽量使用本地图片或 iconfont。

来源地址:https://blog.csdn.net/m0_74433188/article/details/129786053

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯