定义tabbar,以及解决原生微信小程序使用vant的tabbar的bug(点击俩次图标才正确激活)

这篇具有很好参考价值的文章主要介绍了定义tabbar,以及解决原生微信小程序使用vant的tabbar的bug(点击俩次图标才正确激活)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

效果展示

van-tabbar路由模式激活图标都高亮无法点击,微信小程序开发,微信小程序,bug,小程序

一、实现步骤

van-tabbar路由模式激活图标都高亮无法点击,微信小程序开发,微信小程序,bug,小程序

详细步骤,可以参考小程序官方给出的文档:
https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html

1.1. 配置信息

app.json 中的 tabBar 项指定 custom 字段

"tabBar": {
    "custom": true,
    "selectedColor": "#0052D9",
    "color": "#666666",
    "borderStyle": "white",
    "list": [{
        "pagePath": "pages/pickFriend/pickFriend",
        "text": "抽个对象",
        "iconPath": "/images/tabbar/tab1-inactive.png",
        "selectedIconPath": "/images/tabbar/tab1-active.png"
    }, {
        "pagePath": "pages/leftNote/leftNote",
        "text": "留的纸条",
        "iconPath": "/images/tabbar/tab2-inactive.png",
        "selectedIconPath": "/images/tabbar/tab2-active.png"
    }, {
        "pagePath": "pages/pickedNote/pickedNote",
        "text": "抽中纸条",
        "iconPath": "/images/tabbar/tab3-inactive.png",
        "selectedIconPath": "/images/tabbar/tab3-active.png"
    }]
},

1.2. 添加 tabBar 代码文件

在代码根目录下添加入口文件:

custom-tab-bar/index.js
custom-tab-bar/index.json
custom-tab-bar/index.wxml
custom-tab-bar/index.wxss

1.3. 编写 tabBar 代码

custom-tab-bar用自定义组件的方式编写即可,用自定义组件的方式编写即可,该自定义组件完全接管 tabBar 的渲染。另外,自定义组件新增 getTabBar 接口,可获取当前页面下的自定义 tabBar 组件实例。

1.4. 推荐使用vant的tabber组件(不用自己编写了)

推荐使用vant的tabber组件
Tabbar 标签栏 - Vant Weapp (gitee.io)

1.5. 文件代码

  • custom-tab-bar/index.json
"usingComponents": {
    "van-tabbar": "@vant/weapp/tabbar/index",
    "van-tabbar-item": "@vant/weapp/tabbar-item/index"
}
  • custom-tab-bar/index.js
// custom-tab-bar/index.js
Component({
    // 关闭组件样式隔离--允许修改vant组件的样式
    options: {
        styleIsolation: 'shared'
    },
    /**
     * 组件的初始数据
     */
    data: {
        active: 0,
        list: [{
            pagePath: "/pages/pickFriend/pickFriend",
            text: "抽个对象",
            iconPath: "/images/tabbar/tab1-inactive.png",
            selectedIconPath: "/images/tabbar/tab1-active.png",
        }, {
            pagePath: "/pages/leftNote/leftNote",
            text: "留的纸条",
            iconPath: "/images/tabbar/tab2-inactive.png",
            selectedIconPath: "/images/tabbar/tab2-active.png",
            info: 7
        }, {
            pagePath: "/pages/pickedNote/pickedNote",
            text: "抽中纸条",
            iconPath: "/images/tabbar/tab3-inactive.png",
            selectedIconPath: "/images/tabbar/tab3-active.png",
            info: 10
        }]
    },
    /**
     * 组件的方法列表
     */
    methods: {
        onChange(event) {
            // event.detail 的值为当前选中项的索引
            // 有bug--点击两次图标才正确切换
            // 解决办法:https://blog.csdn.net/weixin_62639453/article/details/129773992
            // this.setData({ active: event.detail });
            // 导航跳转
            wx.switchTab({
                url: this.data.list[event.detail].pagePath,
            })
        },
    }
})
  • custom-tab-bar/index.wxml
<!--custom-tab-bar/index.wxml-->
<van-tabbar active="{{ active }}" bind:change="onChange">
    <van-tabbar-item wx:for="{{list}}" info="{{item.info>0 ? item.info : ''}}" wx:key="index">
        <image slot="icon" src="{{item.iconPath}}" mode="aspectFit" style="width: 30px; height: 18px;" />
        <image slot="icon-active" src="{{item.selectedIconPath}}" mode="aspectFit" style="width: 30px; height: 18px;" />
        {{item.text}}
    </van-tabbar-item>
</van-tabbar>

二、解决徽标超出tabbar区域的问题

van-tabbar路由模式激活图标都高亮无法点击,微信小程序开发,微信小程序,bug,小程序

在自定义组件中使用Vant Weapp组件时,需开启styleIsolation: 'shared'

// custom-tab-bar/index.js
Component({
    options: {
        styleIsolation: 'shared'
    },
})


/* custom-tab-bar/index.wxss */
.van-tabbar-item {
    --tabbar-item-margin-bottom: 0
}

参考资料:
样式覆盖 - Vant Weapp (gitee.io)
定制主题 - Vant Weapp (gitee.io)

三、原生微信小程序使用vant的tabbar的bug(解决点击俩次图标才正确激活)

3.1. 问题描述

声明: 在导入使用vant (tabbar)组件的时候,发现通过点击切换的方法来更改active的方法,结合wx.switchTab路由跳转,会出现图标没用及时对应上,需要第二次点击才对应上的问题。

// custom-tab-bar/index.js

methods: {
        onChange(event) {
            // event.detail 的值为当前选中项的索引
            this.setData({ active: event.detail });
            // 导航跳转
            wx.switchTab({
                url: this.data.list[event.detail].pagePath,
            })
        },
    }

3.2. 解决办法

  • 去除onChange里面的激活处理
// custom-tab-bar/index.js

methods: {
        onChange(event) {
            // event.detail 的值为当前选中项的索引
            // 导航跳转
            wx.switchTab({
                url: this.data.list[event.detail].pagePath,
            })
        },
    }
  • 在每一个tab页面的onshow生命周期函数里初始active的值,用来对应每个页面切换之后展示对应的图标。

  • 第一一个tabbar页,对应的active可以设置为0文章来源地址https://www.toymoban.com/news/detail-850630.html

  /**
          * 生命周期函数--监听页面显示
          */
    onShow() {
        // 通过 getTabBar 接口获取组件实例,并调用 setData 更新选中态
        this.getTabBar().setData({ active: 0 })
    },
  • 第二一个tabbar页,对应的active可以设置为1
/**
         * 生命周期函数--监听页面显示
         */
    onShow() {
        // 通过 getTabBar 接口获取组件实例,并调用 setData 更新选中态
        this.getTabBar().setData({ active: 1 })
    },

到了这里,关于定义tabbar,以及解决原生微信小程序使用vant的tabbar的bug(点击俩次图标才正确激活)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序自定义tabbar切换延迟以及切换闪烁问题

    首先,吐槽一番,官方bug,好多年了,一直不解决....那我们就自己解决.. 切换延迟就是点击tabbar时要点击两次icon才能正确选中,比如说首页要跳转到工单页面,要点击两次工单的图标才被激活; 解决: 在对应的要跳转的页面的show生命周期里面加上以下代码即可,selected是custom-tab-bar里

    2024年01月21日
    浏览(53)
  • 微信小程序自定义tabBar使用

    自定义使用tabbar步骤 文章目录 一、为什么要使用自定义tabBar? 二、使用步骤 总结 微信小程序官方默认的tabbar有很多局限性,比如无法调整图片和文字大小、不能动态调整个数等。 小程序开发版本:RC Build (1.06.2206271) 在小程序开发文档中找到指南--》基础能力--》自定义tab

    2024年02月09日
    浏览(57)
  • 微信小程序使用uniapp自定义tabbar

    第一步:在pages.json里定义自己tabbar路径,定义的时候只需要写上页面路径即可  第二步:自定义tabbar页面,为了实现点击动作的动态效果,需要用到watch监听父组件传来的值的改变  自定义tabbar页面全部代码 注:该页面可以直接用组件的方式来放,因为uniapp支持easycom模式,

    2024年02月13日
    浏览(47)
  • 微信小程序中使用 TDesign 自定义 TabBar

    根据 微信官方文档 描述,每个 tab 页下的自定义 tabBar 组件实例是不同的; 如需实现 tab 选中态,要在当前页面下,通过 getTabBar 接口获取组件实例,并调用 setData 更新选中态 在使用到 TabBar 的页面中加入以下代码

    2024年02月08日
    浏览(45)
  • 解决微信小程序自定义tabbar跳转页面图标闪动问题

    情况一    如果你的tabbar对应的页面是component,那就在component下面加上 其中的selected是该tab页面对应的索引值 情况二    如果你的tabbar对应的页面是page,那就将上面的if判断写在page的onshow里面 闪动问题就解决啦~

    2024年02月12日
    浏览(62)
  • 解决微信小程序 自定义tabBar 首次切换时候闪烁问题(实测)

    按照官方自定义tabBar: 配置信息 在 app.json 中的 tabBar 项指定 custom 字段,同时其余 tabBar 相关配置也补充完整。 所有 tab 页的 json 里需声明 usingComponents 项,也可以在 app.json 全局开启。 我的示例: 添加 tabBar 代码文件 在代码根目录下添加入口文件 custom-tab-bar :必须与pages在同

    2024年02月14日
    浏览(38)
  • uniapp 微信小程序使用uview u-tabbar组件自定义tabbar

    1.在components文件下面新建TabBar.vue组件, 使用uview的u-tabbar组件进行二次封装; u-tabbar组件中value取当前匹配项的name, 一般从父组件传过来即可; 在u-tabbar-item标签内可以使用插槽 slot=\\\'inactive-icon\\\'(选中的图标)和slot=\\\'inactive-icon\\\'(未选中的图标)自定义图片样式 u-tabbar组件默认已经为i

    2024年02月13日
    浏览(74)
  • 微信小程序的自定义TabBar及Vant的使用

    1、在 资源管理器 空白位置,点右键打开 在外部终端窗口打开 2、初始化NPM npm init -y 3、安装命令 npm i @vant/weapp@1.3.3 -S --production 4、构建NPM包 在 工具 里选择构建NPM包 5、删除style:v2 在app.json里,删除\\\"style\\\":\\\"v2\\\" 6、按需引入 7、使用 1、定义 2、使用 1、配置 在app.json中的 ta

    2024年02月14日
    浏览(41)
  • 微信小程序自定义底部菜单设计,固定在底部,并非使用tabBar设计

    1.微信小程序自定义底部菜单设计,并且固定在底部,并非tabBar设计 场景:比如加载详情页时:底部需要加入购物车、收藏、返回主页等设计 效果图: 点击事件发生 xx.wxml 样式设计xx.wxss js设计xx.js

    2024年02月16日
    浏览(49)
  • 微信小程序使用自定义tabbar 想要获取tabbar的高度,返回的结果是null,该如何获取?

    在使用自定义tabbar时,你可能会需要获取tabbar的高度,但是按照网上的方法却得不到正确的结果,这让你十分头疼。那么该怎么办呢?小编为大家整理了以下几个方法,希望能够帮到大家。 1️⃣ 使用wx.getSystemInfoSync()方法获取系统信息,然后通过计算得出tabbar的高度。 示例

    2024年02月11日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包