小程序中的behavior

Behavior

概念:用与小程序中组件间代码共享的特性,类似于一些编程语言的 "mixins", "traits"

作用:

  1. 每一个behavior 可以包含一些属性,数据,生命周期函数,方法
  2. 在组件中引用它时,它的属性,数据和方法会被合并到组件中,生命周期函数也会在对应的时机被调用
  3. 每个组件可以引用多个behavior,behavior也可以引用其它的behavior

定义一个behavior:  (就是一个js文件,按照需求,要求,合理编辑)

   首先看下behavior  的常规结构

// my-behavior.js

// 在behavior 中使用 behavior  导入

var mySecondBehavior = require('my-second-behavior')

var mySecondBehavior = require('my-second-behavior')

//导出

module.exports = Behavior({
    
    //注册导入的behavior
    behaviors: [myThirdBehavior, mySecondBehavior],

    properties:{
        
     myBehaviorProperty: {

      type: String

      }

    },

    data:{},

    //生命周期

    created: function () {},
   
    attached: function () {},
   
    ready: function () {},
        

    //方法
    methods: {    }
  
    
})

在组件中使用behavior  

// my-component.js

//导入要使用的behavior  (文件名 大写的使用-替换)

var myBehavior = require('my-behavior')
var mySecondBehavior = require('my-second-behavior')

Component({
  // 在注册behavior  注册的behavior中的方法名如果相同,那么后面的会覆盖
  behaviors: [myBehavior, mySecondBehavior],
   
  properties: {
    myProperty: {
      type: String
    }
  },
   // 同理 data 也会覆盖  合并
   data:{}

})

以上就是behavior 的基本使用 然后在page中正常引用组件就可以

   页面中向behavior 传旨方法同页面向组件传值

<!-- 引用组件的页面模版 -->
<view>
  <my-component my-behavior-property="behavior-property【my-behavitor.js】" my-property="my-property">
  </my-component>
</view>

更多可以结合开发者文档中的实例了解  微信开发者工具behavior

behavior 的生命周期

当组件触发生命周期时,生命周期函数执行顺序为:

  1. [my-behavior] created
  2. [my-component] created
  3. [my-behavior] attached
  4. [my-component] attached
  5. [my-behavior] ready
  6. [my-component] ready

生命周期函数不会相互覆盖,而是在对应触发时机被逐个调用:

  • 对于不同的生命周期函数之间,遵循组件生命周期函数的执行顺序;
  • 对于同种生命周期函数,遵循如下规则:
    • behavior 优先于组件执行;
    • 子 behavior 优先于 父 behavior 执行;
    • 靠前的 behavior 优先于 靠后的 behavior 执行;
  • 如果同一个 behavior 被一个组件多次引用,它定义的生命周期函数只会被执行一次。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
1. 首先,在小程序的根目录下新建一个名为“auth-behavior”的文件夹,用于存放该behavior相关的文件。 2. 在该文件夹下新建一个名为“auth.js”的文件,用于实现该behavior的逻辑。 3. 在“auth.js”文件,定义一个名为“checkAuth”的函数,用于检查用户是否具有某些权限。该函数接收一个名为“auth”的参数,该参数为一个数组,包含需要检查的权限列表。 4. 在“checkAuth”函数,使用小程序的API“wx.getSetting”获取用户已授权的权限列表。 5. 将“auth”参数与已授权的权限列表进行比较,如果用户已经授权了所有需要检查的权限,则返回true,否则返回false。 6. 将“checkAuth”函数导出,以便在其他组件使用。 7. 在需要使用该behavior的组件,使用“behaviors”属性引入该behavior,并在组件的“methods”调用“checkAuth”函数进行权限检查。 例如,以下是一个简单的“auth-behavior”实现: // auth-behavior/auth.js module.exports = Behavior({ methods: { checkAuth(auth) { return new Promise((resolve, reject) => { wx.getSetting({ success(res) { const authorized = auth.every(item => res.authSetting[item]) resolve(authorized) }, fail(err) { reject(err) } }) }) } } }) // pages/home/home.js const authBehavior = require('../../auth-behavior/auth') Page({ behaviors: [authBehavior], methods: { async checkPermission() { const authorized = await this.checkAuth(['scope.userLocation', 'scope.address']) if (authorized) { // do something } else { wx.showToast({ title: '您还未授权', icon: 'none' }) } } } }) 在以上示例,我们定义了一个名为“checkPermission”的方法,在该方法调用了“checkAuth”函数进行权限检查。如果用户已经授权了“scope.userLocation”和“scope.address”两个权限,则执行“do something”代码块,否则显示一个提示框提醒用户授权。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值