欢迎光临散文网 会员登陆 & 注册

supermall项目---tabbar的封装

2021-06-03 09:38 作者:忘魂儿  | 我要投稿

通过跟coderwhy老师的学习,我觉得这个项目收获最多的是一种组件化的思想---万物皆可封装,万物皆可复用,一次编写,到处引入

首先划分下结构

maintabbar作为根组件,tabbar作为底部整体组件,并在里面设立一个插槽用于接收每一个tabbaritem构成的整体,tabbaritem作为每一个小tab,并在里面设立三个具名插槽,分别用于接收非激活状态图片,激活状态图片,和文字

<div class="tab-bar-item" @click="itemClick">

     <div v-show="!isActive"> <slot name="tab-img"></slot></div>

     <div v-show="isActive"> <slot name="tab-img-active"></slot></div>

     <div :style="activeStyle"> <slot name="tab-text"></slot></div>

  </div>

区分激活与否的关键就在于点击的对象是否与当前对象匹配,实现激活功能可以通过v-show。

其中最大的看点就在于这段代码

isActive(){     

      return this.$route.path.indexOf(this.path)!== -1

}

this.$route.path代表路由中的path

this.path我采用的是父组件传过来的props

你就想我点击的这个路由path,和我们这个页面对应的path相等,是不是就代表在同一事件上,也就代表此时是被激活的状态。

而我们使用的是indexOf也就是检索的意思,如果当前路由的path存在这个页面的path则为真!




supermall项目---tabbar的封装的评论 (共 条)

分享到微博请遵守国家法律