微信小程序基于vant的自定义底部导航栏

基于vant-weapp的底部导航栏,首先根据vant官网安装vant

https://vant-ui.github.io/vant-weapp/#/quickstart

由于vant的Tabbar 标签栏自带翻页效果,而且不够美观,且小程序最多只支持10个页面栈,点击多了会导致报错

报错如下 

将wx.navigateTo改为wx.redirectTo在反复多点很多次之后依然会报错,所以还得优化

源码文件链接:

https://download.csdn.net/download/qq_48702470/86838097

贴上代码:

wxml:

<van-tabbar active="{{ active }}" bind:change="onChange" placeholder>
  <van-tabbar-item wx:for="{{ navList }}" wx:key="index" icon="{{ item.icon }}">{{
    item.text
  }}</van-tabbar-item>
</van-tabbar>

 js:

Component({
    properties: {
        navList: {
            type: Array,
            default: () => {
                return [{
                        icon: 'home-o',
                        text: '页面1',
                        url: '/pages/home/home'
                    },
                    {
                        icon: 'search',
                        text: '页面2',
                        url: '/pages/mine/mine'
                    }
                ]
            }
        },
    },
    data: {
        active: 0
    },

    methods: {
        onChange(event) {
            // 当反复点击当前的页面,就不做切换操作了
            if (event.detail !== this.data.active) {
                this.setData({
                    active: event.detail
                });
                wx.switchTab({
                    url: this.data.navList[event.detail].url
                });
            }
            this.triggerEvent('onFooterNavChange', event)
        },

        init() {
            const page = getCurrentPages().pop();
            this.setData({
                active: this.data.navList.findIndex(item => item.url === `/${page.route}`)
            });
        }
    }
});

json:

{
	"component": true,
	"usingComponents": {
		"van-tabbar": "@vant/weapp/tabbar/index",
        "van-tabbar-item": "@vant/weapp/tabbar-item/index"
	}
}

使用方法:

1. 现将组件放入项目根目录的components文件夹下,自定义组件统一放在这里。(可以不用像微信官方案例一样的custom-tab-bar直接放在根目录下,强迫症表示很难受)

2. 然后在app.json中全局设置tabBar的custom属性为true,和其他相关属性

微信官方案例:https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html

"tabBar": {
		"custom": true,
		"color": "#000000",
		"selectedColor": "#000000",
		"backgroundColor": "#000000",
		"list": [
			{
                "pagePath": "pages/home/home"
			},
			{
				"pagePath": "pages/mine/mine"
			}
		]
	}

3. 开始使用

在需要使用到该组件的页面wxml中:

<!-- 底部导航栏 -->
<footer-nav-bar
    id="footer-nav-bar-id"
    navList="{{footerNavList}}"
    bind:onFooterNavChange="onFooterNavChange"
>
</footer-nav-bar>

在需要使用到该组件的页面js中:

data: {
    footerNavList: [{
            icon: 'home-o',
            text: '首页',
            url: '/pages/home/home'
        },
        {
            icon: 'friends-o',
            text: '我的',
            url: '/pages/mine/mine'
        }
    ],
},

/**
 * 生命周期函数--监听页面显示
 */
onShow() {
   // 通过id获取底部导航栏组件,调用其中的init方法获取当前页面
   let footerNavComp = this.selectComponent('#footer-nav-bar-id');
   // 调用组件中的init方法,重要,若没有这一步,在切换导航页面的时候,底部图标高亮会有问题
   footerNavComp.init()
},

onFooterNavChange(event) {
    // 点击底部导航栏切换后回调
    // console.log('点击底部导航栏', event.detail.detail);
}

最终实现效果:

如果想要更高自由度或者特效的底部菜单,不受拘与vant的版本,请戳下方地址

微信小程序自定义底部导航栏_微信小程序底部_夏夜追凉丶的博客-CSDN博客

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
微信小程序中使用 Vant 组件库的侧边导航栏滚动,需要首先在项目中引入 Vant 组件库,并且按照 Vant 的文档进行组件的配置和使用。 首先,在项目根目录下的 `app.json` 文件中配置 Vant 组件的全局样式,示例如下: ```json { "style": "vant-weapp/dist/common/index" } ``` 然后在需要使用侧边导航栏滚动的页面中引入 Vant 的侧边导航栏组件,并按照需求设置好相关属性和事件,示例如下: ```html <van-sidebar show="{{ true }}" width="200rpx" :style="height: 100vh;"> <van-sidebar-item v-for="(item, index) in menuList" :key="index" :title="item.title" :dot="item.dot" :badge="item.badge" /> </van-sidebar> ``` 其中,`show` 属性用于控制侧边导航栏的显示与隐藏,`width` 属性用于设置导航栏的宽度,`:style` 属性用于设置导航栏的高度为可视区域的高度。 此外,需要根据实际需求在 `data` 数据中定义 `menuList` 数组,并为每个侧边导航栏项设置相应的标题、角标和小红点。 最后,在页面的生命周期函数中,通过监听滚动事件来实现侧边导航栏的滚动效果,示例如下: ```javascript Page({ onScroll: function(event) { // 根据滚动位置处理侧边导航栏的样式 } }) ``` 在监听滚动事件中,可以根据滚动位置来处理侧边导航栏的样式,例如高亮当前正在滚动的导航项。 总结起来,要在微信小程序中使用 Vant 组件库的侧边导航栏滚动,需要首先引入 Vant 组件库并进行配置,然后在页面中按照需求引入侧边导航栏组件并设置相应的属性和事件,最后在监听滚动事件中处理导航栏的样式即可。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏夜追凉丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值