当前位置:   article > 正文

uniapp 开发微信小程序 中使用 custom-tab-bar创建自定义tabbar_uniapp custom-tab-bar

uniapp custom-tab-bar

1.   目录结构必须按照如图所示,在src 目录下 

 2. index.js

  1. Component({
  2. data: {
  3. selected: 0,
  4. color: '#7A7E83',
  5. selectedColor: '#3cc51f',
  6. list: [
  7. {
  8. pagePath: '/pages/index/index',
  9. iconPath: '/static/tabbar/index.png',
  10. selectedIconPath: '/static/tabbar/index_selected.png',
  11. text: '首页'
  12. },
  13. {
  14. pagePath: '/pages/mine/index',
  15. iconPath: '/static/tabbar/mine.png',
  16. selectedIconPath: '/static/tabbar/mine_selected.png',
  17. text: '我的'
  18. }
  19. ]
  20. },
  21. attached() {},
  22. methods: {
  23. switchTab(e) {
  24. const data = e.currentTarget.dataset
  25. if (data.index === this.data.selected) {
  26. return
  27. }
  28. const url = data.path
  29. wx.switchTab({ url })
  30. this.setData({
  31. selected: data.index
  32. })
  33. }
  34. }
  35. })

3.  index.html

  1. <view class="tabBar">
  2. <view class="border"></view>
  3. <view wx:for="{{list}}" wx:key="index" class="tabBarItem" data-path="{{item.pagePath}}" data-index="{{index}}" bindtap="switchTab">
  4. <image class="image" src="{{selected === index ? item.selectedIconPath : item.iconPath}}"></image>
  5. <view class="text" style="color: {{selected === index ? selectedColor : color}}">
  6. {{item.text}}
  7. </view>
  8. </view>
  9. </view>

4.  wxss

  1. .tabBar {
  2. position: fixed;
  3. bottom: 0;
  4. left: 0;
  5. right: 0;
  6. z-index: 99;
  7. height: 50px;
  8. background: white;
  9. display: flex;
  10. padding-bottom: env(safe-area-inset-bottom);
  11. }
  12. .border {
  13. background-color: rgba(0, 0, 0, 0.2);
  14. position: absolute;
  15. left: 0;
  16. top: 0;
  17. right: 0;
  18. height: 1rpx;
  19. z-index: 2;
  20. transform: scaleY(0.5);
  21. }
  22. .tabBarItem {
  23. flex: 1;
  24. text-align: center;
  25. display: flex;
  26. justify-content: center;
  27. align-items: center;
  28. flex-direction: column;
  29. }
  30. .tabBarItem .image {
  31. width: 20px;
  32. height: 20px;
  33. margin-bottom: 4px;
  34. }
  35. .tabBarItem .text {
  36. font-size: 12px;
  37. }

5. index.json

  1. {
  2. "component": true
  3. }

 按照微信官方文档,以及代码片段,需要在tabbar 页面中onshow生命周期内设置 tabbar 的选中状态,但是在 uniapp 创建的 页面中是 this 是不包含 getTabBar 方法的, 只有通过 this.$mp.page或者 this.$scope 可以获取到

  1. async onShow() {
  2. if (typeof this.$mp.page.getTabBar === 'function' && this.$mp.page.getTabBar()) {
  3. console.log(this)
  4. this.$mp.page.getTabBar().setData({
  5. selected: 0
  6. })
  7. }
  8. },
  1. async onShow() {
  2. if (typeof this.$scope.getTabBar === 'function' && this.$scope.getTabBar()) {
  3. console.log(this)
  4. this.$scope.getTabBar().setData({
  5. selected: 0
  6. })
  7. }
  8. },

通过设置当前页面下的 tabbar 选中状态,自定义tabbar才能正常使用

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

闽ICP备14008679号