微信小程序 - 17-1.自定义组件tabs

定义段 类型 是否必填 描述
properties ObjectMap 组件的对外属性 , 是属性名到属性设置的映射表
data Object 组件的内部数据 , 和properties一同用于组件的模板渲染
observers Object 组件数据字段监听器 , 用于监听properties和data的变化
methods Object 组件的方法 , 包括事件相应函数和任意自定义方法
created Function 组件生命周期函数 , 在组件实例刚刚被创建时执行 , 注意此时不能调用setData
attached Function 组件生命周期函数 , 在组件实例进入页面节点树时执行
ready Function 组件生命周期函数 , 在组件布局完成后执行
moved Function 组件生命周期函数 , 在组件实例被移动到节点树另一个位置时执行
detached Function 组件生命周期函数 , 在组件实例被从页面节点树移除时执行

自定义一个组件 , 用来实现tab切换效果

自定义一个组件 , 用来实现tab切换效果

一、创建

  1. 官方没有固定要求 , 一般都是放在根目录下的commponents文件夹中

(1). 新建commponents文件夹→新建控件文件夹Tabs(名字随意)→小程序开发工具中右键 , 新建commponents
(2). "component": true 表示是自定义组件

自定义组件的json文件内容

(3). 需要引用的地方 , 打开要引用文件的json文件, 在usingComponents中加Tabs的相对路径 : "Tabs":"../../commponents/Tabs/Tabs"


demo5文件引用自定义组件Tabs
  1. 先在tabs自定义控件中实现切换效果(所有内容都先写在tabs中 , 后边再修改为动态)
    (1). 用list存放tabs上显示的内容和选中效果
    (2). 布局用for循环实现tab
    (3). 自定义控件.js文件中,存放事件回调函数的时候,必须存放在methods中
    tabs.wxml
<view class="tabs">
    <view class="tab_title">
        <view wx:for="{{tabs}}" wx:key="{{tabs.id}}" class="title_item {{item.isActive?'active':''}}" bindtap="handleItemTap" data-index="{{index}}">
            {{item.name}}
        </view>
    </view>
    <view class="tabs_content">内容</view>
</view>

上方title_item的class中title_item和后边设置active中间有空格
tabs.js

  /**
   * 组件的初始数据
   */
  data: {
    tabs: [
      {
        id: 0,
        name: '首页',
        isActive: true
      },
      {
        id: 1,
        name: '原创',
        isActive: false
      },
      {
        id: 2,
        name: '分类',
        isActive: false
      },
      {
        id: 3,
        name: '关于',
        isActive: false
      }
    ]
  },
 
  /**
   * 1. 页面.js文件中,存放事件回调函数的时候,存放在data同层级下
   * 2. 组件.js文件中,存放事件回调函数的时候,必须存放在methods中
   * 组件的方法列表
   */
  methods: {
    //绑定点击事件,需要再methods中绑定
    handleItemTap(e) {
    /**
       1. 绑定点击事件,需要再methods中绑定
       2. 获取被点击的索引
       3. 获取原数组
       4. 对数组循环
          1. 给每一个循环性,选中属性改为false
          2. 给当前的索引项选中属性给true
       */
      console.log("点击咯!");
      console.log(e);
      //获取被点击的索引
      const { index } = e.currentTarget.dataset;//{index} 是es6中的解构赋值(我也不是很懂这里 , 跟着老师敲得 , 之后学习一下)
      //获取data中的数组
      //解构 对复杂类型进行解构的时候,复制了一份变量的引用而已
      //最严谨的做法 重新拷贝一份数组,再对这个数组的北方进行处理 : let tabs = JSON.parse(JSON.stringify(this.data.tabs));
      //不要直接修改this.data.数据
      let { tabs } = this.data;//相当于 let tabs = this.data.tabs;
      //对数组循环(给每一个循环性,选中属性改为false;给当前的索引项选中属性给true)
      //[].forEach遍历数组 遍历数组的时候修改了v 也会导致原数组被修改
      tabs.forEach((v, i) => i === index ? v.isActive = true : v.isActive = false);
      this.setData({
        tabs
      })
    }
  }
})

tabs.wxss

/* tab布局 */
.tabs{

}
/* item带文字的一个布局 */
.tab_title{
    display: flex;
    padding: 10rpx 0;
}
/* item文字显示效果 */
.title_item{
    flex: 1;
    display: flex;
    justify-content: center;
    padding: 10rpx;
    align-items: center;
}
/* 选中效果 */
.active{
    color: red;
    border-bottom: 5rpx solid currentColor;
}
/* 下边内容布局 */
.tabs_content{

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容