父子组件之间的通信
父子组件之间通信的3种方式
属性绑定
- 用于父组件向子组件的指定属性设置数据,仅能设置JSON 兼容的数据
- 属性绑定用于实现父向子传值,而且只能传递普通类型的数据,无法将方法传递给子组件
事件绑定
- 用于子组件向父组件传递数据,可以传递任意数据
- 事件绑定用于实现子向父传值,可以传递任何类型的数据
- 步骤
- 在父组件的js 中,定义一个函数,这个函数即将通过自定义事件的形式,传递给子组件。
- 在父组件的 wxml中,通过自定义事件的形式,将步骤1中定义的函数引用,传递给子组件
- 在子组件的j 中,通过调用 this.triggerEvent(自定义事件名称’,{/*参数对象*/}),将数据发送到父组件
- 在父组件的 js 中,通过 e.detail 获取到子组件传递过来的数据
获取组件实例
- 父组件还可以通过 this.selectComponent()获取子组件实例对象
- 这样就可以直接访问子组件的任意数据和方法
- 可在父组件里调用 this.selectComponent("id或class选择器”),获取子组件的实例对象,从而直接访问子组件的任意数据和方法。调用时需要传入一个选择器,例如this.selectComponent(".my-component")。
behaviors
什么是behaviors
behaviors 是小程序中,用于实现组件间代码共享的特性,类似于 Vue.js 中的“mixins”
behaviors 的工作方式
每个 behavior 可以包含一组属性、数据、生命周期函数和方法。组件引用它时,它的属性、数据和方法会被合并到组件中每个组件可以引用多个 behavior,behavior 也可以引用其它 behavior。
创建 behavior
调用 Behavior(Object object)方法即可创建一个共享的 behavior 实例对象供所有的组件使用
导入并使用 behavior
在组件中,使用require()方法导入需要的 behavior,:挂载后即可访问 behavior 中的数据或方泛