1、什么是behaviors

behaviors是小程序中,用于实现组件间代码共享的特性,类似于vue的"mixins"。

2、behaviors的工作方式

每个behavior可以包含一组属性、数据、生命周期函数和方法。组件引用它时,它的属性、数据和方法会被合并到组件中。

每个组件可以引用多个behavior,behavior也可以引用其它behavior。

2、创建behaviors

调用Behavior(Object object)方法即可创建一个共享的behavior实例对象,供所有的组件使用:
例如,可以在项目根目录创建一个behaviors文件夹,里面存放所有的behaviors文件

behaviors.js文件代码如下

//调用Behavior()方法,创建实例对象
//并使用madule.exports将behavior实例对象共享出去
module.exports = Behavior({//私有数据节点data:{username:'张三'},//属性节点properties:{},//事件处理函数和自定义方法节点methods:{}//其他节点
})

4、导入并使用behaviors

在组件中,使用require()方法导入需要的 behavior,挂载后即可访问behavior中的数据或方法,示例代码如下:

在需要引入behaviors的js文件中引入

//1.使用require()导入需要的自定义behavior模块
const myBehaviors = require("../../behaviors/my-behavior")
Component({//2.将导入的 behavior实例对象,挂载到 behaviors 数组节点中,即可生效behaviors:[myBehaviors]//组件的其他节点..
})

在wxml文件中输出试试

<view>在behaviors中定义的用户名是:{{username}}</view>

成功输出behaviors中的username

5、beahviors中所有可用的节点

6、同名字段的覆盖和组合规则*

组件和它引用的 behavior中可以包含同名的字段,此时可以参考如下3种同名时的处理规则:
①同名的数据字段(data)

②同名的属性(properties)或方法(methods)

③同名的生命周期函数

组件和它引用的 behavior 中可以包含同名的字段,对这些字段的处理方法如下:

  • 如果有同名的属性 (properties) 或方法 (methods):

    1. 若组件本身有这个属性或方法,则组件的属性或方法会覆盖 behavior 中的同名属性或方法;
    2. 若组件本身无这个属性或方法,则在组件的 behaviors 字段中定义靠后的 behavior 的属性或方法会覆盖靠前的同名属性或方法;
    3. 在 2 的基础上,若存在嵌套引用 behavior 的情况,则规则为:父 behavior 覆盖 子 behavior 中的同名属性或方法。
  • 如果有同名的数据字段 (data):

    • 若同名的数据字段都是对象类型,会进行对象合并;
    • 其余情况会进行数据覆盖,覆盖规则为:组件 > 父 behavior > 子 behavior 、 靠后的 behavior > 靠前的 behavior。(优先级高的覆盖优先级低的,最大的为优先级最高)
  • 生命周期函数不会相互覆盖,而是在对应触发时机被逐个调用:

    • 对于不同的生命周期函数之间,遵循组件生命周期函数的执行顺序;
    • 对于同种生命周期函数,遵循如下规则:
      • behavior 优先于组件执行;
      • 子 behavior 优先于 父 behavior 执行;
      • 靠前的 behavior 优先于 靠后的 behavior 执行;
    • 如果同一个 behavior 被一个组件多次引用,它定义的生命周期函数只会被执行一次。

微信小程序开发:自定义组件-behaviors相关推荐

  1. 微信小程序 配置自定义组件代码按需注入 lazyCodeLoading

    微信小程序 配置自定义组件代码按需注入 lazyCodeLoading 官方网址 在app.json最后一行加上,就可以了. "lazyCodeLoading": "re ...

  2. 微信小程序的自定义组件(2)

    文章目录 6. 组件的生命周期 7. 组件所在页面的生命周期 8. 组件插槽 9. 组件父子组件间的通信 10. 组件-behaviors 6. 组件的生命周期 created attached re ...

  3. 微信小程序(自定义组件)

    文章目录 自定义组件 创建自定义组件 引用组件 组件和页面的区别 自定义组件的样式 样式隔离 修改样式隔离选项 组件的data和methods 组件的properties 数据监听 使用纯数据字段提升 ...

  4. 四十八、微信小程序开发系统组件

    @Author:Runsen Hello,现在中午,结果写完到了下午.还是再复习学习下小程序的组件,以后开发项目就有了强大的基础.来吧,不学习就是辣鸡. 文章目录 组件 scroll-view swi ...

  5. 微信小程序_自定义组件_初体验

    自定义组件是微信小程序中重要的组成部分,是实现模块化开发的重要手段 个人认为,自定义组件是区分菜鸟与高手的分水岭 第一篇先介绍小程序自定义组件的基本使用 自定义组件的使用可以分为如下几个步骤 创建组件 ...

  6. 微信小程序开发:组件

    文章目录 小程序中组件的分类 常用的视图容器组件 view组件的基本使用 scroll-view组件的基本使用 swiper组件 常用的基础内容组件 button按钮的基本使用 image组件的基本使 ...

  7. 微信小程序之自定义组件的使用、介绍、案例分享

    微信小程序自定义组件介绍 自定义组件发开文档 类似vue或者react中的自定义组件, 小程序允许我们使用自定义组件的方式来构建页面. 自定义组件的使用 1. 创建组件(js,json,wxml,wx ...

  8. 微信小程序之自定义组件(微信小程序完结)

    微信小程序 自定义组件 类似vue或者react中的自定义组件, 小程序允许我们使用自定义组件的方式来构建页面. 1.1 创建自定义组件 类似于页面,一个自定义组件由 json, wxml, wxss ...

  9. 微信小程序中自定义组件

    文章目录 小程序项目 app.json pages/index/index.wxml pages/index/index.wxss pages/index/index.js 自定义组件 compone ...

  10. 微信小程序开发 自定义按钮实现分享转发功能

    文章目录 前言 一.详细步骤 前言 微信小程序,默认的分享功能是通过右上角的 "···" 按钮调用的,那么如何通过自定义按钮调用呢?本文将给出具体方法. 一.详细步骤 我采用了mp ...

最新文章

  1. Java中合成与继承的选择
  2. happens-before规则和指令重排
  3. cxgrid动态创建列
  4. 用Java将文件读入字节数组的7个示例
  5. python学习笔记:第19天 类的约束、异常、MD5和logging
  6. java Map统计字符串中元素的数量
  7. Codeforces Round #350 (Div. 2) B. Game of Robots 水题
  8. 【Python】之glob库介绍
  9. python实现信号幅值归一化
  10. 博客生活的另一种境界![博友话题]
  11. [it-ebooks]电子书列表
  12. Python 程序设计(第3版)
  13. Linux(四):什么是Bash、什么是shell?
  14. android锁屏时间大小,Android 4.4.4 锁屏界面时间大小修改
  15. tp-link tl-wr740n 虚拟服务器,TPlinktl-wr740n服务器无响应,路由器上的广域网信号? 爱问知识人...
  16. quill Cannot import ImageResize. Are you sure it was registered?
  17. 最新人工智能、大数据与复杂系统一月特训班_机器学习入门到精通
  18. 象棋芯片植入_今日科技话题:第四代煤炭地下气化技术、中耳演化新模式、“雪龙2”号、植入式磁共振探测器、棋牌游戏、糖尿病脂肪肝...
  19. Google Drive文件下载
  20. AI面试官上岗,求职者该如何应对?

热门文章

  1. Windows电脑怎么重装系统?超详细教程!装机不再求人!
  2. 新西兰Working Holiday Visa(WHV)签证申请图文
  3. html使用vcastr3.swf播放器播放flv视频
  4. 最新JAVA调用新浪微博API之发微博(转)
  5. 项目挂到iis 点击导入 未将对象引用设置到对象的实例_用Notion管理读书项目
  6. 梅科尔工作室—罗森——鸿蒙笔记2
  7. 第一篇,网络管理--网络特工
  8. Vue3 + 高德地图
  9. Linux(5)账号和权限管理
  10. Springboot毕设项目报刊杂志订阅系统w457e(java+VUE+Mybatis+Maven+Mysql)