小程序组件的使用

215 阅读2分钟

小程序组件的使用

一个组件内的文件:axml、js、acss、json

json 文件

开发者需要在.json文件中指明自定义组件的依赖。如下:

{
    "component": true,
    "usingComponents": {
        "c1":"../x/index"
    }
}

component 属性必填


js 文件

js 文件的属性和方法:

Component({
  // 开发者有时候可能会实现多个自定义组件,而这些自定义组件可能会有些公共逻辑要处理,为此,小程序提供了mixins。
  // 注意: 这个是什么意思????????????
  // 每一个 mixin 只能包含 props、data、methods、didMount、didUpdate、didUnmount等属性。
  // 多个 mixin 中的属性 key 要确保不同,否则会报错。
  mixins: [],
  // data 为组件的局部状态,和页面一样,可以通过this.setData更改,会触发组件的重新渲染。
  data: {},
  // 以上代码使用 props 属性设置属性默认值,然后在事件处理函数中通过 this.props 可以取到这些属性。
  // 注意:
  // props 为外部传过来的属性,可指定默认属性,后面不可修改。
  // 自定义组件的 axml 中可以直接引用 props 属性。
  props: {},
  // didMount 为渲染后回调,此时页面已经渲染,通常在这里请求服务端数据比较合适。
  didMount() {},
  // didUpdate 为更新后回调,每次组件数据变更的时候都会调用。
  // 注意:
  // 组件内部调用 this.setData 会触发 didUpdate
  // 外部调用者调用 this.setData 也会触发 didUpdate
  didUpdate() {},
  // didUnmount 为组件卸载后回调,每当组件示例从页面删除的时候会触发此回调。
  didUnmount() {},
  methods: {},
});

其他组件实例属性

除了 data、setData、props等属性外,组件实例上还有如下属性:

  • is: 组件路径

  • $page: 组件所属页面实例

  • $id: 组件 id,在 axml 中也可直接渲染


axml 文件
  • default slot 的使用
<view>
  <slot>
    <view>default slot & default value</view>
  </slot>
  <view>other</view>
</view>
  • name slot 的使用(命名插槽) 在不同的位置渲染不同的 axml,可以传递多个 axml
<view>
  <slot>
    <view>default slot & default value</view>
  </slot>
  <slot name="header"/>
  <view>body</view>
  <slot name="footer"/>
</view>
  • slot scope 的使用 写在 slot 中的 axml 代码使用子组件中的 data上 的数据,及可以访问到当前 page 上的数据也可以访问组件内部中的 data 上的数据 在外部调用者使用组件自定义标签的时候,使用slot-scope属性,slot-scope 的值将被用作一个临时变量名,此变量接收从自定义组件 axml 传递过来的 prop 对象。
<xx>
<view slot-scope="props">
<view>component data: {{props.x}}</view>
<view>page data: {{y}}</view>
</view>
</xx>
// /pages/index/index.js
Page({
data: { y: 2 },
});
// /components/xx/index.js
Component({
data: {
x: 1,
},
});
  • 页面显示结果
component data: 1
page data: 2
body

props 的使用

props 中是父组件传递下来的数据和事件名称,可以在组件内部使用