uni-app 开发微信小程序 自定义tabBar

pages.js 里面tabBar配置加上"custom": true

"tabBar": {
	"custom": true,
    "color": "#8a8a8a",
    "selectedColor": "#198cfb",
    "borderStyle": "black",
    "backgroundColor": "#ffffff",
    "list": [{
        "pagePath": "pages/index/index",
        "text": "首页",
        "iconPath": "static/tabbar/basics.png",
        "selectedIconPath": "static/tabbar/basics_blue.png"
      },
      {
        "pagePath": "pages/UserCenter/index",
        "text": "我的",
        "iconPath": "static/tabbar/about.png",
        "selectedIconPath": "static/tabbar/about_blue.png"
      }
    ]
  }

然后在根目录下新增custom-tab-bar  因为uni-app 不会编译这个文件夹所以要建成微信小程序一样的

 主要的两个文件index.wxml,index.js

<view class="tab-bar-wrapper">
	<view class="tab-bar">
		<view class="tab-box">
			<view class="tab-bar-item" wx:for="{{list}}" wx:key="index" class="tab-bar-item"
				data-path="{{item.pagePath}}" data-index="{{index}}" bindtap="switchTab">
				<image src="{{selected === index ? item.selectedIconPath : item.iconPath}}" mode=""></image>
				<view style="color: {{selected === index ? selectedColor : color}}">{{item.text}}</view>
			</view>
		</view>
	</view>
</view>

index.js

Component({
  data: {
    selected: 0,
    color: "#ffffff",
    selectedColor: "#f40918",
    list: [{
      "pagePath": "/pages/index/index",
      "text": "首页",
      "iconPath": "/static/tabbar/basics.png",
      "selectedIconPath": "/static/tabbar/basics_blue.png"
    },{
      "pagePath": "/pages/UserCenter/index",
      "text": "我的",
      "iconPath": "/static/tabbar/about.png",
      "selectedIconPath": "/static/tabbar/about_blue.png"
    }]
  },
	attached () {
		this.setData({
		  selected: 0
		})
	},
	observers: {
		"selected": function (newVal) {
			const index = wx.getStorageSync("tabBarIndex")
			if (newVal != index) {
				this.setData({
				  selected: index
				})
			}
		}
	},
  methods: {
    switchTab(e) {
      const data = e.currentTarget.dataset
      const url = data.path
      wx.switchTab({ url })
			const index = wx.getStorageSync("tabBarIndex")
      this.setData({
        selected: index
      })
			wx.setStorageSync("tabBarIndex", data.index)
    }
  }
})

在pages/index/index里面的onLoad,onShow方法中 uni.setStorageSync("tabBarIndex", 0) 缓存对应的值

pages/UserCenter/index uni.setStorageSync("tabBarIndex", 1) 

在main.js 中 uni.setStorageSync("tabBarIndex", 0)  这个是在页面初始化的时候将缓存值改为0  不然会显示上一次的缓存值

效果图

样式我没有贴出来 样式就自己改成ui图一样的就好 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值