微信小程序动态tabBar实现

JavaScript028

微信小程序动态tabBar实现,第1张

最近做项目的时候,突然来了个小特殊的需求,根据客户的类型来动态显示底部的tabBar菜单。当时我就有点小懵逼了,这个不是小程序自带的组件么?还要做成动态?这就有点尴尬了..... 不过也只是一时尴尬而已,然后我就展开了搜索之旅.....然后发现,官方的组件确实没办法做动态,那咋办,如果真的有这个需求那也是得去处理滴呀~然后也看了有一些做到这效果的方法,那就试一下呗。。其实就是自定义个tabBar的模板,以下是实现: 首先,既然是说自定义组件,那是用到template了。那先在Page里新建个template的文件夹,以便放tabBar的组件。 然后新建个tabBar.wxml文件,这里就写下你的tabBar的结构。 下面是tabBar所需要用到的样式,我这里就直接写在全局app.wxss了。 然后接下来是js的部分,由于是底部的导航,那肯定是不止一个页面用到的,那这里就可以写在全局的app.js里面方便使用。这里我写了两种tabBar的模板,分别对应来显示 然后在需要用到这个组件的页面上直接调用。比如这里的index页面。 然后去index.js里面调用tabBar 然后下面是效果图。 就这些。我个人觉得这个自定义导航的用户体验不是很好,能不用就不要用,不过知道下方法也是ok滴!如有发现有错或者不足的地方可以指出,谢谢!

tabBar——底部标签栏

1、在app.js中使用tabBar(不用引入AtTabBar组件、更新current值 onClick函数)

(1)了解参数

 (2)使用

tabBar: {

  color:'#808080',

  backgroundColor:'#CCDEFF',

  selectedColor:'#FFFFFF',

  list:[

{

      pagePath:'pages/homePage/home_page',

      text:'社群',

      iconPath:'assets/img/homePageIconUnselected.png',

      selectedIconPath:'assets/img/homePageIconSelected.png',

    },

    {

      pagePath:'pages/index/index',

      text:'个人',

      iconPath:'assets/img/personPageUnselected.png',

      selectedIconPath:'assets/img/personPageSelected.png'

    }

]

}

2、引入AtTabBar组件

(1)引入组件:import{ AtTabBar }from'taro-ui'

PS:使用带图标标签栏时还需引入以下样式文件(仅按需引用时需要):

@import"~taro-ui/dist/style/components/icon.scss"

(1)通过onClick事件来更新current值变化

constructor() {

    super(...arguments)

    this.state = {

    current:0

    }

}

handleClick (value) {

    this.setState({

        current: value

    })

}

(2)直接使用<AtTabBar>

render () {

    return(

        <AtTabBar

            backgroundColor='#ececec'

            color='#ea6bb8'

            fixed   //固定底部

            tabList={[

                {title:'待办事项',iconPrefixClass:'fa',iconType:'clock',text:'new'},

                {title:'拍照' ,iconType:'camera'},

                {title:'通讯录',iconType:'folder',text:'100',max:'99'}

            ]}

            onClick={this.handleClick.bind(this)}

            current={this.state.current}

        />

    )

}

tabs——标签页

1、引入组件:import{ AtTabs, AtTabsPane }from'taro-ui'

2、与引入AtTabBar组件类似,通过onClick事件来更新current值变化

constructor() {

    super(...arguments)

    this.state = {

    current:0

    }

}

handleClick (value) {

    this.setState({

        current: value

    })

}

3、使用

4、参数