当前位置:   article > 正文

20.自定义tabBar(使用vant中的tabbar)_van-tabbar-item

van-tabbar-item

自定义tabBar就是不用官方提供的tabBar了,而是自己搞

目录

1  配置

2  使用vant组件库做TabBar

2.1  引入组件

2.2  使用组件

2.3  自定义图标

2.4  把info与store进行绑定

2.5  tab页面的切换

2.6  改变激活状态下的文本颜色


1  配置

首先你需要在项目根目录中创建名为 custom-tab-bar 的文件夹,然后在其中创建名为 index 的组件

  • custom-tab-bar名称固定
  • index名称固定

之后你需要在app.json节点下,加入custom:true

然后你进入到list包含的页面中,就可以看到自定义tabBar了

这里的内容是与index.wxml一样的

2  使用vant组件库做TabBar

2.1  引入组件

2.2  使用组件

比如我们想用基础用法的这个tabbar,那就把这段代码复制下来

然后将他们搞到 custom-tab-bar/index中

然后就看到了自定义的tabbar了

当你点击第二个tabbar的时候,第二个tabbar就会高亮显示

2.3  自定义图标

自定义图标就要用这个东西

首先搞wxml,我当前的index.wxml是这样的

  1. <!--custom-tab-bar/index.wxml-->
  2. <!-- <van-tabbar active="{{ active }}" bind:change="onChange">
  3. <van-tabbar-item icon="home-o">标签</van-tabbar-item>
  4. <van-tabbar-item icon="search">标签</van-tabbar-item>
  5. <van-tabbar-item icon="friends-o">标签</van-tabbar-item>
  6. <van-tabbar-item icon="setting-o">标签</van-tabbar-item>
  7. </van-tabbar> -->
  8. <van-tabbar active="{{ active }}" bind:change="onChange">
  9. <van-tabbar-item info="3">
  10. <image
  11. slot="icon"
  12. src="{{ icon.index_normal }}"
  13. mode="aspectFit"
  14. style="width: 30px; height: 18px;"
  15. />
  16. <image
  17. slot="icon-active"
  18. src="{{ icon.index_activate }}"
  19. mode="aspectFit"
  20. style="width: 30px; height: 18px;"
  21. />
  22. 主页
  23. </van-tabbar-item>
  24. <van-tabbar-item info="3">
  25. <image
  26. slot="icon"
  27. src="{{ icon.logs_normal }}"
  28. mode="aspectFit"
  29. style="width: 30px; height: 18px;"
  30. />
  31. <image
  32. slot="icon-active"
  33. src="{{ icon.log_activate }}"
  34. mode="aspectFit"
  35. style="width: 30px; height: 18px;"
  36. />
  37. 日志
  38. </van-tabbar-item>
  39. </van-tabbar>

然后搞index.js,我当前的index.js是这样的

  1. // custom-tab-bar/index.js
  2. Component({
  3. /**
  4. * 组件的属性列表
  5. */
  6. properties: {
  7. },
  8. /**
  9. * 组件的初始数据
  10. */
  11. data: {
  12. active:0,
  13. icon:{
  14. index_normal:"/src/tabBar_icon/not_activate_home.png",
  15. index_activate:"/src/tabBar_icon/activate_home.png",
  16. logs_normal:"/src/tabBar_icon/not_activate_log.png",
  17. log_activate:"/src/tabBar_icon/activate_log.png",
  18. }
  19. },
  20. /**
  21. * 组件的方法列表
  22. */
  23. methods: {
  24. onChange(event) {
  25. this.setData({active:event.detail})
  26. }
  27. }
  28. })

src/tabBar_icon是我之前就放好的图像

搞完就有自定义的tabbar了

点击也是有用的

2.4  把info与store进行绑定

我现在像将这里的3搞成一个变量放在store中

你那这个自定义tabBar当组件用就行了,我当前的store中有numA

把变量numA引入到 custom-tab-bar/index.js 中

然后就能在wxml上用了

2.5  tab页面的切换

现在你点这个tabBar是不能页面切换的

我们可以利用onChange事件来搞一下

之前我们使用event.detail拿到了tabBar的索引,现在我们也可以用索引配合wx.switchTab()来切换tab页

这样搞完之后点击指定的tab确实可以切换tab页,但是在激活tab状态会出问题。比如下面我点击的是日志,也切换到日志页面了,但是激活状态在主页上

这个时候我们需要将active这个变量放在store中

然后引入到 custom-tab-bar/index.js 中

注释掉之前的active

然后改变一下onChange的内容

然后就行了

2.6  改变激活状态下的文本颜色

图标的激活状态与未激活状态的图像都是我们自定义的,但是文本我们没有特意去搞,默认状态下激活状态的文本是蓝色

只需要给van-tabbar这个标签加上active-color属性就可以了

这样激活状态的文字就变为你想要的颜色了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/245847
推荐阅读
相关标签
  

闽ICP备14008679号