【微信小程序】-- 自定义组件 -- 数据、方法和属性(三十三)

简介: 【微信小程序】-- 自定义组件 -- 数据、方法和属性(三十三)



一、自定义组件 - 数据、方法和属性

  前面已经学习了小程序中的自定义组件 – 创建与引用&样式,通过栗子了解到组件全局引用和局部引用,以及组件和页面之间的区别,还有页面、组件样式之间的隔离。接下来就来讲解一下另外一个自定义组件 - 数据、方法和属性。话不多说,让我们原文再续,书接上回吧。

1、data 数据

  在小程序组件中,用于组件模板渲染的私有数据,需要定义到 data 节点中,具体代码如下:

test1.js

Component({
  /**
   * 组件的初始数据
   */
  data: {
    count: 0
  },
})

2、methods 方法

  在小程序组件中,事件处理函数和自定义方法需要定义到 methods 节点中,这里通过按钮自加1的栗子来了解一下,而且点击按钮时候还要有弹窗提示 count 值,具体代码如下:

test1.wxml

<view>count当前的值是:{{count}}</view>
<button bindtap="addCount">+1</button>

test1.js

  组件的方法列表可以包含事件处理函数和自定义方法,一般自定义方法都建议以 _ 开头,方便与事件处理函数进行区分。

Component({
  /**
   * 组件的方法列表
   */
  methods: {
    // 点击事件处理函数
    addCount(){
      this.setData({
        count: this.data.count + 1
      });
      this._showCount();
    },
    // 自定义方法
    _showCount(){
      wx.showToast({
        title: 'count值为:' + this.data.count,
        icon: 'none'
      })
    }
  }
})

  当点击按钮就有弹窗提示当前 count 值,可以来看一下运行效果:

3、properties 属性

  在小程序组件中,properties 是组件的对外属性,常用来接收外界传递到组件中的数据,定义方式有以下两种:

  • 完整定义

  完整定义方式是可以指定属性的数据类型和默认值。

Component({
  /**
   * 组件的属性列表
   */
  properties: {
    max: {
      type: Number, // 属性值的数据类型
      value: 10  // 属性默认值
    },
  },
})
  • 简化定义

  简化定义属性只是指定属性的数据类型而已。

Component({
  /**
   * 组件的属性列表
   */
  properties: {
    max:Number 
  },
})

  当需要知道属性默认值时,建议使用完整定义属性,而不需要指定属性默认值时,可以使用简化方式。

  这里以完整定义为例,当点击按钮加到最大值时,就不能在加了,具体代码如下:

message.wxml

  给组件传递最大值参数

<view></view>
<my-test1 max="9"></my-test1>

test1.js

Component({
  /**
   * 组件的方法列表
   */
  methods: {
    // 点击事件处理函数
    addCount(){
      if(this.data.count >= this.properties.max) return;
      this.setData({
        count: this.data.count + 1
      });
      this._showCount();
    },
    // 自定义方法
    _showCount(){
      wx.showToast({
        title: 'count值为:' + this.data.count,
        icon: 'none'
      })
    }
  }
})

  当 count 累加到 9 时,再点击按钮就不会生效了,可以来看一下实际运行效果:

4、data 和 properties 的区别

  在 Vue 中 data 是组件的私有数据,properties 是外界传到组件的数据,同时,对于组件来说,data 是可读可写的,而 properties 是只读的。

  但在小程序的组件中,properties 属性和 data 数据的用法相同,它们都是可读可写的,只不过:

  • data 更倾向于存储组件的私有数据。
  • properties 更倾向于存储外界传递到组件中的数据。

  下面通过一个栗子来说明小程序中 data 和 properties都指向同一对象,具体代码如下:

test1.wxml

<button bindtap="showInfo">showInfo</button>

test1.js

  当 data 和 properties 的对比结果为 true 时,说明这两者都指向同一个对象。

Component({
  /**
   * 组件的方法列表
   */
  methods: {
    showInfo(){
      console.dir(this.data);
      console.dir(this.properties);
      console.dir(this.data === this.properties);
    },
  }
})

  可以发现 data 和 properties 都打印出相同的值,而且结果为 true ,说明这两者都是可读可写的,来看一下运行结果:

5、使用 setData 修改 properties 的值

  由于 data 数据和 properties 属性在本质上没有任何区别,因此 properties 属性的值也可以用于页面渲染,或使用 setData 为 properties 中的属性重新赋值,具体代码如下:

test1.wxml

  在组件的 wxml 文件中使用 properties 属性的值。

<view>max属性的值是:{{max}}</view>

test1.js

   使用 setData 修改属性的值。

Component({
  /**
   * 组件的方法列表
   */
  methods: {
    // 点击事件处理函数
    addCount(){
      if(this.data.count >= this.properties.max) return;
      this.setData({
        count: this.data.count + 1,
        max: this.properties.max,
      });
      this._showCount();
    },
  }
})

   当点击 +1 按钮的时候,count 和 max 都会进行 +1 操作,可以来看一下运行效果:


总结

  感谢观看,这里就是常用的视图容器类组件的介绍使用,如果觉得有帮助,请给文章点个赞吧,让更多的人看到。🌹 🌹 🌹

  也欢迎你,关注我。👍 👍 👍

  原创不易,还希望各位大佬支持一下,你们的点赞、收藏和留言对我真的很重要!!!💕 💕 💕 最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!下期再见。🎉


相关文章
|
1月前
|
小程序 JavaScript
【微信小程序】之轮播图、swiper、swiper-item、banner组件使用
【微信小程序】之轮播图、swiper、swiper-item、banner组件使用
【微信小程序】之轮播图、swiper、swiper-item、banner组件使用
|
1月前
|
小程序 JavaScript
【微信小程序】之顶部选项卡自定义tabs(不用mp-tabs扩展组件,太难用了)
【微信小程序】之顶部选项卡自定义tabs(不用mp-tabs扩展组件,太难用了)
|
1月前
|
小程序 JavaScript 前端开发
微信小程序全栈开发中的数据交互与渲染优化
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的数据交互与渲染优化,旨在提升小程序性能和用户体验。数据交互涉及GET、POST、PUT和DELETE请求,优化措施包括使用HTTPS、数据压缩、缓存及限流。渲染优化则涵盖虚拟DOM、减少DOM操作、组件化和模板使用,以及WXSS样式设计和媒体查询。利用性能监控工具可识别并优化性能瓶颈。开发者应综合运用这些策略,持续优化小程序。
|
1月前
|
小程序 数据库
【微信小程序7】云开发中实时聊天系统的实现方法
【微信小程序7】云开发中实时聊天系统的实现方法
24 0
|
1月前
|
小程序
【微信小程序6】引入第三方UI的方法(ColorUi)
【微信小程序6】引入第三方UI的方法(ColorUi)
24 0
|
1月前
|
小程序 JavaScript
【微信小程序】之自定义四宫格(不用mp-grids扩展组件实现,这个组件太难用了)
【微信小程序】之自定义四宫格(不用mp-grids扩展组件实现,这个组件太难用了)
|
21天前
|
存储 编解码 小程序
抖音小程序开发中遇见的坑点
在抖音小程序开发中,需注意10大坑点:遵守小程序限制与规范;解决兼容性问题;优化数据加载速度;适应分享功能限制;处理视频播放挑战;优化图片加载显示;管理资源文件;提升用户体验;考虑安全性;及时更新维护。通过测试、优化和遵循官方文档,可克服这些问题,打造优质小程序。
|
1月前
|
小程序 前端开发 API
小程序全栈开发中的多端适配与响应式布局
【4月更文挑战第12天】本文探讨了小程序全栈开发中的多端适配与响应式布局。多端适配涉及平台和设备适应,确保统一用户体验;响应式布局利用媒体查询和弹性布局维持不同设备的布局一致性。实践中,开发者可借助跨平台框架实现多平台开发,运用响应式布局技术适应不同设备。同时,注意兼容性、性能优化和用户体验,以提升小程序质量和用户体验。通过这些方法,开发者能更好地掌握小程序全栈开发。
|
1月前
|
小程序 前端开发 API
微信小程序全栈开发中的异常处理与日志记录
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的异常处理和日志记录,强调其对确保应用稳定性和用户体验的重要性。异常处理涵盖前端(网络、页面跳转、用户输入、逻辑异常)和后端(数据库、API、业务逻辑)方面;日志记录则关注关键操作和异常情况的追踪。实践中,前端可利用try-catch处理异常,后端借助日志框架记录异常,同时采用集中式日志管理工具提升分析效率。开发者应注意安全性、性能和团队协作,以优化异常处理与日志记录流程。
|
1月前
|
小程序 安全 数据安全/隐私保护
微信小程序全栈开发中的身份认证与授权机制
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的身份认证与授权机制。身份认证包括手机号验证、微信登录和第三方登录,而授权机制涉及角色权限控制、ACL和OAuth 2.0。实践中,开发者可利用微信登录获取用户信息,集成第三方登录,以及实施角色和ACL进行权限控制。注意点包括安全性、用户体验和合规性,以保障小程序的安全运行和良好体验。通过这些方法,开发者能有效掌握小程序全栈开发技术。

热门文章

最新文章