微信小程序behaviors

微信小程序文章推荐:微信小程序必备开发技能总结(不断更新)

一、微信小程序中的behaviors 什么?

微信小程序中的behaviors指的是一组件间,可以共享的代码,类似于Vue 中的mixins,它可以实现代码的复用。每个 behavior 可以包含一组属性、数据、生命周期函数和方法。组件引用它时,它的属性、数据和方法会被合并到组件中,生命周期函数也会在对应时机被调用。

二、创建behavior

js 复制代码
module.exports = Behavior({
    properties: {
        name: {
            type: String,
            value: '未知'
        }
    },
    data: {
        time: new Date().getTime()
    },
    methods: {
        updateTime() {
            this.setData({
                time: new Date().getTime()
            })
        }
    },
    lifetimes: {
        created () {
            console.log('behavior---created')
        },
        ready () {
            console.log('behavior----ready')
        }
    }
})

在这个文件中:

  • 使用微信小程序内置的Behavior 方法创建了一个behavior
  • 在Behavior的参数对象中定义了properties,data,methods,lifetimes
  • 使用module.exports进行了导出

三、 behavior 在组件中的使用

在项目根目录下创建components文件夹,再创建test 文件夹,选中test文件夹,鼠标右键新建Component,填写组件名称test。test.js中使用创建出来的behavior,具体使用方式如下:

test.js

js 复制代码
const testBehavior = require('../../behaviors/test-behavior')
Component({
    behaviors: [testBehavior],

  /**
   * 组件的属性列表
   */
  properties: {

  },

  /**
   * 组件的初始数据
   */
  data: {

  },

  /**
   * 组件的方法列表
   */
  methods: {

  }
})

在这个文件中:

  • 使用require 导入了前面我们创建的behavior
  • 在Component方法中的参数属性中,通过behaviors属性进行behavior的使用

test.wxml

html 复制代码
<view>
    <view>
        <text>您的名字: {{name}}</text>
    </view>
    <view>
        <text>时间戳:{{time}}</text>
    </view>
    
    <button type="primary" bindtap="updateTime">更新时间戳</button>
</view>

在pages/index/index.json中注册test组件

js 复制代码
{
  "usingComponents": {
      "my-test": "/components/test/test"
  }
}

pages/index/index.wxml中使用组件:

index.wxml 复制代码
<view>
    <my-test></my-test>
</view>

运行效果:

可以看到我们在test-behavior中定义创建的behavior,已经被调用了,点击更新时间戳的时候,时间戳也会更新。在控制台也能看到生命周期中的输出

四、behavior 中的定义和组件中定义了同名的优先级

  1. 首先来看看 properties 和, data, 我们在test组件中的test.js中的 properties和data属性定义相同的名称,但是值不同,来看下会优先使用哪个

test.js 修改如下

js 复制代码
const testBehavior = require('../../behaviors/test-behavior')
Component({
    behaviors: [testBehavior],

  /**
   * 组件的属性列表
   */
  properties: {
    name: {
        type: String,
        value: '组件中的未知'
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    time: new Date().getTime() + '组件中的时间戳'
  },

  /**
   * 组件的方法列表
   */
  methods: {

  }
})

查看页面运行效果:

可以看到,当组件和behavior定义了相同字段的properties 和data字段时,会优先使用组件里面的。

再来看看methods,test.js中methods修改如下:

js 复制代码
methods: {
        updateTime() {
            this.setData({
                time: new Date().getTime() + '组件中更新了时间戳'
            })
        }
    }

点击按钮查看运行效果:

可以看到依然是组件里面的方法优先级高于behavior定义的方法。

再来看看生命周期是怎么样的覆盖规则,在test.js中添加和behavior中定义相同的生命周期函数,打印不同的文案。

test.js 添加如下代码:

js 复制代码
lifetimes: {
        created () {
            console.log('behavior---created---在组件中')
        },
        ready () {
            console.log('behavior----ready0-----在组件中')
        }
    }

查看控制台运行效果: 可以看到behavior中的生命周期和组件中的生命周期都会打印,同一个生命周期函数,会先先打印behavior中的,在打印组件中的,同一个生命周期behavior中的先执行,后执行组件中的。

五、总结

本篇主要介绍了,behavior的创建方式,在组件中的使用方式,以及定义了相同的字段的覆盖规律,看了本篇,相信你已经对behavior 有了印象,好好利用behavior 可以提高到代码的复用率。

今天的分享就到这里了,感谢你的收看,小程序文章可关注uni-app,小程序知识储备

相关推荐
IT_陈寒5 小时前
SpringBoot自动配置坑了我一把,原来是这样绕过去的
前端·人工智能·后端
广州华水科技5 小时前
单北斗GNSS变形监测在大坝安全监测中的应用与优势
前端
zeng不错6 小时前
B站 173 个投稿活动看到眼瞎?我写了个扩展,主打一个精准打击
前端
Latchh6 小时前
前端导出的JPEG红字发糊,质量要拉到100才清楚
前端·图像处理·人工智能·计算机视觉
默_笙6 小时前
🚦 请三个 AI 考官给 RAG 打分:量化评估实战(下)
前端·javascript
阿坨6 小时前
灵感闪存卡:一款 Tampermonkey用户脚本
javascript·tampermonkey
Joy T6 小时前
聊天系统中五大ID的演进与实战解析
java·前端·人工智能·spring·agent入门
Seraphina368 小时前
DVWA(SQL注入-low,medium,XSS反射-low)
前端·数据库·笔记·sql·网络安全·web·xss
Access开发易登软件8 小时前
Access 导入 Markdown 表格:把文档里的数据写进表
前端·html·vba·markdown·access开发
朝朝辞暮i8 小时前
C++ 第 25 课:getter / setter + this
java·javascript·c++