微信小程序自定义tabbar图标切换点击两次才选中解决方法

微信小程序开发过程中使用了自定义tabBar,运行官网提供的demo是没有问题的,但是自己添加了新的tab-item后点击会出现错误,具体表现为:点击一次tab跳到指定的页面,但是tabBar的状态还停留在上一个,再次点击才能更新。

问题分析

Component({
  data: {
    selected: 0,
    color: "#7A7E83",
    selectedColor: "#3cc51f",
    list: [{
      pagePath: "/index/index",
      iconPath: "/image/icon_component.png",
      selectedIconPath: "/image/icon_component_HL.png",
      text: "组件"
    }, {
      pagePath: "/index/index2",
      iconPath: "/image/icon_API.png",
      selectedIconPath: "/image/icon_API_HL.png",
      text: "接口"
    }]
  },
  attached() {
  },
  methods: {
    switchTab(e) {
      const data = e.currentTarget.dataset
      const url = data.path
      wx.switchTab({url})
      this.setData({
        selected: data.index
      })
    }
  }
})

在methods的switchTab()方法中看似在切换tab后更新了当前选中的tab,但是这样是不够的,可以查看对应页面的show()中官方还添加了下面的代码:

// 组件页面
show() {
  if (typeof this.getTabBar === 'function' &&
    this.getTabBar()) {
    this.getTabBar().setData({
      selected: 0
    })
  }
}

// 接口页面
show() {
  if (typeof this.getTabBar === 'function' &&
    this.getTabBar()) {
    this.getTabBar().setData({
      selected: 1
    })
  }
}

我们自己新添加的页面正是应为缺少了这段代码,才会出现开始提到的问题。在新增的页面添加即可解决,注意你的selected值应该是tabBar数组中对应的index。


web开发总结
不积跬步无以至千里

纸上得来终觉浅,绝知此事要躬行

473 声望
27 粉丝
0 条评论
推荐阅读
onMounted is called when there is no active component 已解决
If you are using async setup(), make sure to register lifecycle hooks before the first await statement.

来了老弟阅读 159

微信小程序开发过程中需要首先了解一些基础知识
微信小程序支持引用npm管理的第三方包,但引用的方式与传统的node.js项目并不一致。具体还得随时开发随时学习垃圾的官方文档,之所以说需要随时学习,是因为这个文档变化的比较快。

myskies3阅读 1k

【uni-app&微信小程序&React Native】跨端原理初探
文章内容以官方文档为基础,对uni-app的基础框架(逻辑层、渲染层)、组件、API进行简单地分析以官方文档为基础,对微信小程序框架(逻辑层、视图层)、运行时进行简单地分析以官方文档为基础,对React Native旧...

白边3阅读 1.4k

小程序内参数和扫码参数统一
写小程序的时候都会遇到扫码参数和小程序内跳转参数要分开处理的问题,但实际上参数和处理的方式都是一样的,这里封装一种方法,将扫码参数直接放到options下面,这样就不需要分开独立处理,减少冗余代码增加代码...

海洋饼干1阅读 888

1000套微信小程序源码开源版附H5小游戏源码及商城源码
随着微信小程序功能和生态的日益完善,很多企业的产品业务逐渐从App扩展到微信小程序和微信公众号。随着小程序项目页面越来越多,业务逻辑越来越复杂,现有的小程序元源码数量和种类不能满足快速增长的业务需求。...

会搭讪的烤地瓜阅读 3.6k

5 分钟带你小程序入门 [实战总结分享]
微信小程序常常用 4 种文件类型JS 文件JS 在小程序中用于编写页面逻辑和交互效果,可调用 API 接口完成数据请求和处理,也可以使用第三方库和框架。模块化编程:小程序中JS文件可以使用ES6的模块化语法,通过expo...

程序员海军2阅读 510

封面图
微信小程序如何在事件中传参
在微信小程序中如果使用了wx:for进行渲染时,由于同时生成了很多一样的dom。这时候如果想知道当前处理的是哪个对象,则需要在事件中进行传参,方法如下:

myskies阅读 1.2k

纸上得来终觉浅,绝知此事要躬行

473 声望
27 粉丝
宣传栏