微信小程序开发学习小结之tabBar组件与block标签

179 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情

tabbar组件:

限制:

tabBar里边能够配置最少两个最少五个 页面.

分类:

分为两种,顶部和底部.

位置:

放于根目录下的app.json页面.

格式:

"tabBar": {
    "list": [
      {
      "pagePath": "pages/index/index",
      "text": "home",
      "iconPath": "/images/tabBar/home.png",
      "selectedIconPath": "/images/tabBar/home-active.png"
     
    },
    {
      "pagePath": "pages/calculator/calculator",
      "text": "culculator",
      "iconPath": "/images/tabBar/calculator.png",
      "selectedIconPath": "/images/tabBar/calculator-avtive.png"
    },
    {
      "pagePath": "pages/contact/contact",
      "text": "联系我们",
      "iconPath": "/images/tabBar/contact.png",
      "selectedIconPath": "/images/tabBar/contact-active.png"
    }
  ]
  },

其中list列表中存放单位元素为tabbar所含的页面,有几个元素tabbar就有几个页面.

属性:

tabbar的组成部分:

image.png

image.png 其中每个页面 下边都含有几个常用属性如下图所示:

image.png 其中pagepath组件和text组件为必填项,这两个组件必须存在.而下方的iconpath组件和selectediconpath组件为非必填项,可以选填.如果不填,图标位置将会预留为背景色.

注意:

 当渲染顶部tabbar时不会显示图标,只会显示文字.

list列表的第一个页面要是pages下的第一个页面.

其中tabbar的图标素材可以去 iconfont-阿里巴巴矢量图标库 去获取.

样例:

"tabBar": {
    "list": [
      {
      "pagePath": "pages/index/index",
      "text": "home",
      "iconPath": "/images/tabBar/home.png",
      "selectedIconPath": "/images/tabBar/home-active.png"
     
    },
    {
      "pagePath": "pages/calculator/calculator",
      "text": "culculator",
      "iconPath": "/images/tabBar/calculator.png",
      "selectedIconPath": "/images/tabBar/calculator-avtive.png"
    },
    {
      "pagePath": "pages/contact/contact",
      "text": "联系我们",
      "iconPath": "/images/tabBar/contact.png",
      "selectedIconPath": "/images/tabBar/contact-active.png"
    }
  ]
  },

image.png

image.png

image.png

block标签:

< block > 并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。

样例:

<view class="userinfo">
    <block wx:if="{{!hasUserInfo}}">
      <button wx:if="{{canIUseGetUserProfile}}" bindtap="getUserProfile"> 获取头像昵称 </button>
      <button wx:else open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button>
    </block>
    <block wx:else>
      <image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image>
      <text class="userinfo-nickname">{{userInfo.nickName}}</text>
    </block>
  </view>
  getUserProfile(e) {
    // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认
    // 开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
    wx.getUserProfile({
      desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
      success: (res) => {
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
      }
    })
  },
 data: {
    userInfo: {},
    hasUserInfo: false,
    canIUseGetUserProfile: false,
  },

当我们想要一次性判断多个组件标签时可以用block包裹,并在后跟wx:if来判断,如上述例子一样,当未获取用户信息时显示的一个请求获取用户信息的按钮,当已获取用户信息后显示内容为< image >标签和< text>标签.