验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

微信小程序怎么自定义组件Component使用

阅读:1094 来源:乙速云 作者:代码code

微信小程序怎么自定义组件Component使用

1- 前言

在本文中你将收获

  • 小程序如何使用自定义组件

  • 自定义组件之间的传值

  • 自定义组件中插槽的使用

2- 组件文件新建

2.1 定义组件

在根目录新建components文件夹,建立cell 文件夹,右击创建cell的Component组件

  • cell.js

  • cell.wxml

  • cell.json

  • cell.wxss

2.2 注册组件

页面的xxx.json ,usingComponent注册

"usingComponents": {
"item":"/components/item/item"
}

2.3 使用组件

2.4 图参考

微信小程序怎么自定义组件Component使用

微信小程序怎么自定义组件Component使用

3- 外部类和样式隔离

3.1定义组件

cell.wxml 文件



cell.wxss

/* pages/com/com.wxss */
.cell{
  color: tomato;
}
.mycell{
  color: #f70;
  line-height: 120rpx !important;
}

cell.js 文件

  /* 选项 */
  options:{
    /* 样式隔离:apply-shared 父影响子
    shared 父子相互影响   isolated 相互隔离
    */
    styleIsolation:'isolated',
  },
  //通过组件的外部类实现父组件控制自己的样式
  externalClasses:["cell-class"],

3.2 使用组件



微信小程序怎么自定义组件Component使用

3.3 图解释

微信小程序怎么自定义组件Component使用

4- 组件插槽

4.1 默认插槽

cell.wxml

 
  我是cell组件
  

cell.js

  /* 选项 */
  options:{
    //允许多个插槽
    multipleSlots:true,
  },

cell.wxss

.cell{
  height: 88rpx;
  line-height: 88rpx;
  border-bottom: 1rpx solid #cccccc;
}

使用cell组件


  放假
  快点到来

微信小程序怎么自定义组件Component使用

4.2 命名多插槽

cell.wxml

 
  
  我是cell组件
  
  

cell.js

  /* 选项 */
  options:{
    //允许多个插槽
    multipleSlots:true,
  },

cell.wxss

.cell{
  height: 88rpx;
  line-height: 88rpx;
  border-bottom: 1rpx solid #cccccc;
}

com.wxml



  ????‍????
  ????‍????
  放假
  快点到来


  ????
  ????‍
  做核酸
  今天要做

微信小程序怎么自定义组件Component使用

5- 组件传参

5.1 父传子

5.1.1 定义组件

cell.wxml


  {{title}}
  {{num}}

cell.js

// components/cell/cell.js
Component({
  /* 选项 */
  options:{
    /* 样式隔离:apply-shared 父影响子
    shared 父子相互影响   isolated 相互隔离
    */
    styleIsolation:'isolated',
    //允许多个插槽
    multipleSlots:true,
  },
  /**
   * 组件的属性列表
   */
  properties: {
    title:{
      type:String,
      value:""
    },
    num:{
      type:Number,
      value:1
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    //定义组件自己的数据count
    count:1
  },
  /**
   * 组件的方法列表
   */
})
5.1.2 使用组件

com.wxml


5.1.3 图解

微信小程序怎么自定义组件Component使用

5.2 子传参父

5.2.1 定义组件

cell.wxml


  {{title}}
  {{count}}

cell.js

// components/cell/cell.js
Component({
  /* 选项 */
  options:{
    /* 样式隔离:apply-shared 父影响子
    shared 父子相互影响   isolated 相互隔离
    */
    styleIsolation:'isolated',
    //允许多个插槽
    multipleSlots:true,
  },
  /**
   * 组件的属性列表
   */
  properties: {
    title:{
      type:String,
      value:""
    },
    num:{
      type:Number,
      value:1
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    //定义组件自己的数据count
    count:1
  },
  lifetimes:{
    //在组件生命周期attached挂载更新count
    attached(){
      console.log(this.data);
      //count 的值为父组件传递的num值
      this.setData({count:this.data.num})
    }

  },
  /**
   * 组件的方法列表
   */
  methods: {
    tapHd(){
      this.setData({count:this.data.count+5})
      //发送一个事件
      this.triggerEvent("cellclick",this.data.count)
    }
  }
})
5.2.2 使用组件

com.wxml

 
  {{title}}
  {{count}}
5.2.3 图解

微信小程序怎么自定义组件Component使用

6- 案例item组件

6.1 定义组件

  • 首先在根目录下创建一个专门放自定义组件的文件夹;

  • 然后在小程序编辑器里,右键,新建Component;

微信小程序怎么自定义组件Component使用



  
    
  
  
    
      {{title}}
    
    
    
      {{tip}}
      
        
        {{badge}} 
      
      
    
    
  
/* components/item/item.wxss */
.item{
  line-height: 88rpx;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.icon{
  margin-left: 30rpx;
  margin-right: 30rpx;
  height: 100%;
  display: flex;
  align-items: center;
}
.icon image{
  width: 60rpx;
  height: 60rpx;
}
.content{
  padding: 0 30rpx;
  border-bottom: 1rpx solid #ccc;
  display: flex;
  flex: 1;
}
.title{
  flex: 1;
  color: #333;
  font-size: 35rpx;
}
.right{
  display: flex;
  align-items: center;
}
.right .arrow{
  height: 25rpx;
  width: 25rpx;
  border-top: 3rpx solid #999;
  border-right: 3rpx solid #999;
  transform: rotate(45deg);
}
.tip{
  color: #999;
  font-size: 28rpx;
}
.dot{
  height: 15rpx;
  width: 15rpx;
  background-color: #f30;
  margin-left: 15rpx;
  border-radius: 50%;
}
.redbadge{
  font-size: 20rpx;
  padding: 5rpx;
  background-color: #f30;
  width: 30rpx;
  max-height: 30rpx;
  line-height: 30rpx;
  color: #fff;
  text-align: center;
  margin-left: 15rpx;
  border-radius: 20rpx;
}

6.2 使用组件

引入组件:在页面的 json 文件中进行引用声明;

微信小程序怎么自定义组件Component使用


{
  "usingComponents": {
    "cell": "/components/cell/cell"
  }
}

在页面的 wxml 中像使用基础组件一样使用自定义组件(名字和声明的保持一致)









  


插槽title





  
.myitem{
  line-height: 120rpx !important;
  background-color: #f0f0f0;
}

微信小程序怎么自定义组件Component使用

分享到:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
相关文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感兴趣
推荐阅读 更多>