小程序之自定义组件笔记

官方文档戳这里:文档

一、单个与多个slot的使用方法

1.单个使用


<view class="wrapper">
  <view>这里是组件的内部节点view>
  <slot>slot>
view>

<view>
  <component-tag-name>
    
    <view>这里是插入到组件slot中的内容view>
  component-tag-name>
view>

2.多个使用

slot默认使用单个,若要使用多个,要先声明:

//Component.js
Component({
  options: {
    multipleSlots: true // 在组件定义时的选项中启用多slot支持
  }
})
使用name属性来区分slot

<view class="wrapper">
  <slot name="before">slot>
  <view>这里是组件的内部细节view>
  <slot name="after">slot>
view>

引用页面用slot属性来选择要注入的slot


<view>
  <component-tag-name>
    
    <view slot="before">这里是插入到组件slot name="before"中的内容view>
    
    <view slot="after">这里是插入到组件slot name="after"中的内容view>
  component-tag-name>
view>

笔记:

  • 页面模板view里面的内容会直接替换组件slot标签里的内容,而不是叠加
  • 一般是用于非组件逻辑的代码块的注入,不用于数据注入。

二、组件样式

1.不能使用的选择器

#a { } /* 在组件中不能使用 */
[a] { } /* 在组件中不能使用 */
button { } /* 在组件中不能使用 */
.a > .b { } /* 除非 .a 是 view 组件节点,否则不一定会生效 */

2.:host指定组件默认样式

/* 组件 custom-component.wxss */
:host {
  color: yellow;
}

笔记:

  • 使用不被允许的选择器会报错哦。
  • 组件内的样式完全独立,不继承全局样式(app.wxss)以及页面样式。所以有用到字体图标需要重新引用

三、属性、数据、方法构造器

1.组件通用属性与方法

通用属性

属性名 类型 描述
is String 组件的文件路径
id String 节点id
dataset String 节点dataset
data Object 组件数据,包括内部数据和属性值

通用方法

setData
/* setData */
this.setData({
  //需要设置的data
});
hasBehavior
/* hasBehavior */
//检查组件是否具有 behavior (检查时会递归检查被直接或间接引入的所有behavior)
triggerEvent
选项值 默认值 描述
bubbles false 事件是否冒泡
composed false 事件是否可以穿越组件边界,为false时,事件将只能在引用组件的节点树上触发,不进入其他任何组件内部
capturePhase false 事件是否拥有捕获阶段
//参数依次为事件名、参数、选项值
this.triggerEvent(action,{},{});
//funName 为组件的触发动作名字,在页面里这样绑定
<component-tag-name bind:action="fun"></component-tag-name>
createSelectorQuery
//大致写法
var query = this.createSelectotQuery();
query.("#id||.class").scrollOffset(function(res){
     //获取到的节点信息
});

query有关的文档戳这:文档

selectComponent&selectAllComponents
//使用选择器选择组件实例节点,返回匹配到的第一个组件实例对象
//使用选择器选择组件实例节点,返回匹配到的全部组件实例对象组成的数组
getRelationNodes
//获取所有这个关系对应的所有关联节点(父节点、子节点)

构造器

Component({

  behaviors: [],

  properties: {
    //通常用于接受页面出传过来的值,页面如下
    //
    //可用setData改变值
    myProperty: { 
      type: String, // 类型(必填),目前接受的类型包括:String, Number, Boolean, Object, Array, null(表示任意类型)
      value: '', // 属性初始值(可选),如果未指定则会根据类型选择一个
      observer: function(newVal, oldVal){} // 属性被改变时执行的函数(可选),也可以写成在methods段中定义的方法名字符串, 如:'_propertyChange'
    },
    myProperty2: String // 简化的定义方式
  },
  data: {}, // 私有数据,可用于模版渲染
  // 生命周期函数,可以为函数,或一个在methods段中定义的方法名
  attached: function(){
  //组件生命周期函数,在组件实例进入页面节点树时执行
  },
  moved: function(){
  // 组件生命周期函数,在组件实例被移动到节点树另一个位置时执行
  },
  detached: function(){
  //组件生命周期函数,在组件实例被从页面节点树移除时执行
  },

  methods: {
    //组件的自定义方法写在这里
    onMyButtonTap: function(){
      this.setData({
      })
    }
  }

})

你可能感兴趣的:(小程序)