【微信小程序】自定义组件(三)

这篇具有很好参考价值的文章主要介绍了【微信小程序】自定义组件(三)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

插槽

1、什么是插槽

在自定义组件的wxml结构中,可以提供一个<solot> 节点(插槽),用于承载组件使用者提供的wxml结构

2、单个插槽

在小程序中,默认每个自定义组件中只允许使用一个<slot>进行占位,这种个数上的限制叫做单个插槽。

<view class="wrapper">
  <view>这里是组件的内部节点</view>
  <!-- 对于不确定的内容,可以使用<solt>进行占位,具体内容有组件的使用者决定 -->
  <slot></slot>
</view>

<!-- 组件的使用者 -->
<component-tag-name>
  <!-- 这部分内容将被放置在组件的使用者决定 -->
  <view>这里是插入到组件的slot的内容</view>
</component-tag-name>
3、定义多个插槽
<view class="wrapper">
  <!-- name为before的第一个slot插槽 -->
  <slot name="before"></slot>
  <!-- name为after的第一个slot插槽 -->
  <slot name="after"></slot>

</view>
-------------------
<component-tag-name>
  <!-- 这部分内容将被放置在组件的使用者决定 -->
  <view slot="before">这里是插入到组件的before的内容</view>
  <view slot="after">这里是插入到组件的after的内容</view>
</component-tag-name> -->

父子组件之间的通信

1、父子组件之间的通信的3种方式

1.父子组件之间通信的3种方式

①属性绑定

用于父组件向子组件的指定属 性设置数据,仅能设置JSON兼容的数据

②事件绑定

用于子组件向父组件传递数据, 可以传递任意数据

③获取组件实例

父组件还可以通过 this.selectComponent()获取子组件实例对象,
这样就可以直接访问子 组件的任意数据和方法

2、事件绑定

事件绑定用于实现子向父传值,可以传递任何类型的数据。
①在父组件的js中,定义一个函数,这个函数即将通过自定义事件的形式,传递给子组件

//再父组件中定义syncCount方法
  //将来,这个方法会被传递给子组件,使子组件进行调用
  syncCount(){
    console.log('syncCount');
  },

②在父组件的wxml中,通过自定义事件的形式,将步骤1中定义的函数引用,传递给子组件

<!-- 使用bind:自定义事件名称 -->

<my-test3 count="{{count}}" bind:sync='syncCount'></my-test3>
<!-- 或者使用bind后面直接写上自定义事件名称  -->
<my-test3 count="{{count}}" bindsync='syncCount'></my-test3>

③在子组件的js中,通过调用this.triggerEvent('自定义事件名称’, {/*参数对象*/}),将数据发送到父组件

addCount(){
      this.setData({
        count:this.properties.count+1
      })
      this.triggerEvent('sync',{value:this.properties.count})
    }

④在父组件的js中,通过e.detail获取到子组件传递过来的数据

syncCount(e){
	this.setData({
		count:e.detail.value
	})
	
}
3、behaviors

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

  • behaviors的工作方式

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

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

  • 创建behaviors
module.exports=Behavior({
  //属性节点
  properties:{},
  //私有数据节点
  data:{usernameL:'zs'},
  //事件处理函数和自定义方法节点
  methods:{},
  // /其他节点
})
  • behavior中所有可用的节点
可用的节点 类型 是否必填 描述
properties object Map 同组件的属性
data object 同组件的数据
methods object 同自定义组件的方法
behaviors String Array 引入其它的behavior
created Function 生命周期函数
attached Function 生命周期函数
ready Function 生命周期函數
moved Function 生命周期函数
detached Function 生命周期函数
  • 同名字段的覆盖和组合规则

组件和它引用的 behavior 中可以包含同名的字段,对这些字段的处理方法如下:文章来源地址https://www.toymoban.com/news/detail-762472.html

  • 如果有同名的属性 (properties) 或方法 (methods):
    1. 若组件本身有这个属性或方法,则组件的属性或方法会覆盖 behavior 中的同名属性或方法;
    2. 若组件本身无这个属性或方法,则在组件的 behaviors 字段中定义靠后的 behavior 的属性或方法会覆盖靠前的同名属性或方法;
    3. 在 2 的基础上,若存在嵌套引用 behavior 的情况,则规则为:引用者 behavior 覆盖 被引用的 behavior 中的同名属性或方法。
  • 如果有同名的数据字段 (data):
    • 若同名的数据字段都是对象类型,会进行对象合并;
    • 其余情况会进行数据覆盖,覆盖规则为: 引用者 behavior > 被引用的 behavior靠后的 behavior > 靠前的 behavior。(优先级高的覆盖优先级低的,最大的为优先级最高)
  • 生命周期函数和 observers 不会相互覆盖,而是在对应触发时机被逐个调用:
    • 对于不同的生命周期函数之间,遵循组件生命周期函数的执行顺序;
    • 对于同种生命周期函数和同字段 observers ,遵循如下规则:
      • behavior 优先于组件执行;
      • 被引用的 behavior 优先于 引用者 behavior 执行;
      • 靠前的 behavior 优先于 靠后的 behavior 执行;
    • 如果同一个 behavior 被一个组件多次引用,它定义的生命周期函数和 observers 不会重复执行

到了这里,关于【微信小程序】自定义组件(三)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序自定义组件标签

    目录 前言 1.创建一个components文件夹,用来放自定义组件标签

    2024年02月10日
    浏览(81)
  • 【微信小程序】记一次自定义微信小程序组件的思路

    最近来个需求,要求给小程序的 modal 增加个关闭按钮,上网一查发现原来 2018 年就有人给出解决方案了,于是总结下微信小程序自定义组件的思路:一句话, 用 wxml + css实现和原生组件类似的样式和效果,之后用 JS 实现类似原生组件的功能。 比如 modal 组件,观察可以得出就

    2024年02月11日
    浏览(33)
  • 微信小程序之自定义组件

    目录 自定义组件 — 样式  自定义组件—数据、方法和属性 数据监听器 纯数据字段 组件的生命周期 组件所在页面的生命周期 数据监听器-案例 插槽 组件通信-父子组件之间的通信 ①在项目的根目录中,鼠标右键,创建 components - test 文件夹 ②在新建的 components - test 文件夹上

    2024年02月07日
    浏览(34)
  • 微信小程序-自定义组件的使用

    1.使用步骤 创建组件 注册组件 使用组件 1创建组件 通常将项目中的组件都放在一个独立的目录下,并且一般就给这个文件夹取名为:components 。 右键点击MyTest,点击新建Component,填写组件名之后会自动创建4个同名的文件. 注意: 组件和页面的结构是一致的,但也是有区别: 组件

    2024年02月03日
    浏览(30)
  • 微信小程序|自定义弹窗组件

    2024年02月12日
    浏览(29)
  • 微信小程序学习笔记(四)——自定义组件

    创建组件 在根目录下创建 components 文件夹 右键点击 components 文件夹,选择 新建 Component ,就会自动生成 .wxml、.wxss、.js、.json 文件 引用组件 组件的引用方式分为“ 局部引用 ”和“ 全局引用 ”,故名思义: 局部引用 :组件只能在当前被引用的页面内使用 全局引用 :组件

    2024年02月16日
    浏览(28)
  • 微信小程序自定义日期选择器组件

    默认开始时间为当天 最大结束时间为当天 默认结束时间为开始时间的10后 wxml   js wxss

    2024年02月11日
    浏览(38)
  • 微信小程序之自定义组件开发

    从小程序基础库版本 1.6.3 开始,小程序支持简洁的组件化编程。所有自定义组件相关特性都需要基础库版本 1.6.3 或更高。开发者可以将页面内的功能模块抽象成自定义组件,以便在不同的页面中重复使用;也可以将复杂的页面拆分成多个低耦合的模块,有助于代码维护。自

    2024年02月02日
    浏览(39)
  • 微信小程序自定义导航栏navBar组件

    参考链接,第二个链接下滑时导航栏变白色好用微信小程序自定义navigationBar顶部导航栏,兼容适配所有机型(附完整案例)_小程序自定义导航栏-CSDN博客  【微信小程序开发(二)】自定义导航栏_微信小程序分类导航栏-CSDN博客 一.创建navBar组件 1.components下创建navBar文件夹

    2024年04月25日
    浏览(45)
  • 微信小程序- component 自定义组件及引用

    一、自定义组件 1、根目录下创建一个 Components 文件夹 2、在 Components 文件夹中创建一个文件夹(文件夹名称为组件名称),例如组件名称为Myheader  3、点击Myheader 文件夹,右键选择 新建Component, 并命名为Myheader   4、在 Myheader.wxml 和 Myheader.scss 中写对应的内容 二、引用自定

    2024年02月04日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包