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

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

🎁写在前面:

观众老爷们好呀,这里是前端小刘不怕牛牛频道,小程序系列文章又更新了呀。

上文我们讲解了微信小程序自定义组件的入门知识,那么今天牛牛就来讲讲自定义组件的进阶知识吧,赶紧拿起小本本做笔记呀!

微信小程序 properties,微信小程序(黑马),微信小程序,小程序,前端

一,组件的数据和方法

自定义组件的数据和方法在使用上,和Vue的组件十分相似,不过也有一点区别,首先我们来了解一下组件私有数据的定义。

1.1 data数据

data中的数据就作为组件的私有数据使用,定义在对应自定义组件js文件下的component构造器中,语法如下:

Component({
	data : {
		a : 10,
		b : 20
	}
})

这样我们就给组件定义了两个数据,在模板在我们可以直接{{a}}调用,而在component构造器中,我们也只需this.a便可获取到该数据。

1.2 methods方法

methods中方法的定义也是与Vue十分相似,位置与上述的data同级,语法如下:

Component({
	methods : {
		// 定义一个isShow函数
		isShow(){
			// do something
		}
	}
})

不过,在开发中会将methods方法分为事件处理函数和自定义方法,事件处理函数是监听事件,当事件触发再调用。而自定义方法则是由我们自己调用。

在命名上,建议methods中的自定义方法以_开头,以便区分。

1.3 properties属性

properties可以称之为对外属性,用来接收外界传递给组件的数据。而这个外界就是父组件,也就是说在页面引用自定义组件的时候,可以同时传递数据进去,组件就会通过properties属性接收传进来的数据。

<son-view username='niuniu'></son-view>

学过Vue的小伙伴可能就说了,这不就是Vueprops属性吗。

对,但不完全对。在微信小程序中,properties属性里的数据也是可以修改的,这是需要注意的地方。

回归正题,如何在组件中接收这个数据呢?

  1. 如果你想给properties中 的数据定义默认值,若没有传值,则用默认值赋值,那么你需要用完整格式

    properties : {
    	username : {
    		type: String,
    		value : xiaoliu
    	}
    }
    
  2. 如果不需要赋默认值,就可以使用简化格式

    properties : {
    	username : String
    }
    

如何修改:

我们还是可以直接调用this.setData方法进行修改。

this.setData({username : this.username.slice(0, -1)})

二,数据监听器

数据监听器其实类似于Vuewatch监听属性

我们可以选择对某个数据进行监听, 当发生变化时,调用对应的回调函数

Component({
	observers : {
		'username' : function(username){}
	}
})

一个回调函数可以对应监听多个,只需要添加对应参数即可。

监听对象属性字段:

当我们想要监听对象里面的数据,只需要用obj.username代替上面的username即可。

需要注意的是,监听对象属性的触发情况,不仅有this.setData方法改变对象属性值触发,直接给对象赋值也会触发。

三,纯数据字段

简而言之,在data的数据,不用于界面的渲染,也不传递给其他组件,仅在组件内部使用,我们便可把他定义为纯数据字段,这样做的作用就是提升页面更新的性能

使用方法:

Component 构造器的 options 定义段中指定 pureDataPattern 为一个正则表达式,字段名符合这个正则表达式的字段将成为纯数据字段

比如我想要让开头是_的字段名作为纯数据字段,我可以这样做。

Component({
	options : {
		pureDataPattern : /^_/
	}
})

四,组件的生命周期

前面我们提过小程序的生命周期、页面的生命周期,组件的生命周期的作用与前两者一样,帮助程序员在特定的时间点处理一些事情。

4.1 生命周期阐述

组件的生命周期按时间顺序有:

钩子 说明
created Component实例创建时调用
attached 实例进入页面节点树
ready 在组件在视图层布局完成后执行
moved 在组件实例被移动到节点树另一个位置时执行
detached 在组件实例被从页面节点树移除时执行
error 组件方法抛出错误时

对于组件来说,最重要的生命周期是 createdattacheddetached

  • created调用时,组件实例刚创建,不能用setData,通常只是给this添加一些自定义的属性字段
  • attached调用时,this.data初始化完毕,这时候我们可以做一些初始化工作,比如发送请求获取初始数据
  • 而当detached调用时,退出页面,此时可以做一些清理性质的工作

4.2 定义生命周期

定义生命周期的方法有新旧两种,旧的方法和Vue一样,直接在Component里面定义(第二级)。

而新的方法则是需要在Component中的lifetimes中定义,建议使用新的方法定义生命周期。

4.2 监听组件所在页面的生命周期

有时,组件的一些行为需要依赖所在页面生命周期调用的时机,如触发页面的show时,组件想要显示出欢迎回来的字样

这时候,我们可以在组件中监听页面的生命周期,只需要在ComponentpageLifetimes中定义即可。

pageLifetimes : {
	show : function(){
		//触发时调用
	}
}

注意:

组件只可访问showhideresize三个页面生命周期


今天的小程序文章到这里就结束啦,如果觉得对您有帮助的话,可以关注牛牛接下来的文章

感谢您的支持,您的支持是我们创作的最大动力!!!

债见~~文章来源地址https://www.toymoban.com/news/detail-781931.html

微信小程序 properties,微信小程序(黑马),微信小程序,小程序,前端

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

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

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

相关文章

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

    插槽 1、什么是插槽 在自定义组件的wxml结构中,可以提供一个 solot 节点(插槽),用于承载组件使用者提供的wxml结构 2、单个插槽 在小程序中,默认每个自定义组件中只允许使用一个 slot 进行占位,这种个数上的限制叫做单个插槽。 3、定义多个插槽 父子组件之间的通信

    2024年02月04日
    浏览(60)
  • 【微信小程序】自定义组件(一)

    🎁 写在前面: 观众老爷们好呀,这里是前端小刘不怕牛牛频道,小程序系列文章又更新了呀。 今天牛牛带来的是微信小程序的自定义组件入门知识,赶紧拿起小本本做笔记呀! 1.1 介绍 自定义组件,就是开发者将页面的某个功能模块抽象化并提取出来的代码块,支持复用,

    2023年04月08日
    浏览(72)
  • 【微信小程序】自定义组件(一)

    组件的创建与引用 1、创建组件 在项目的根目录中,鼠标右键,创建 components - test 文件夹 在新建的components - test文件夹上,鼠标右键,点击\\\"新建Component\\\" 键入组件的名称之后回车,会自动生成组件对应的4个文件,后缀名分别为 js, json, .wxml 和.Wxss 注意:为了保证目录结构的清

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

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

    2024年02月11日
    浏览(52)
  • 关于微信小程序没定义query却还报错TypeError: Cannot set property ‘query‘ of undefined

    最开始以为 #ifndef 和 #endif  这是注释  看见下面写了个vue3,把这个vue3改成了vue2, 然后然后最重要的是,改了自己又忘了自己改了这里,折磨了不知道多了多少minutes,又记起来了,然后就解决啦~~~~ 然后查了一下这是啥意思,发现这是一种预处理指令 ifdef = if define 意思是如

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

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

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

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

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

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

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

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

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

    2024年02月16日
    浏览(50)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包