本章主要讲解组件中的状态数据,我们可以在这里去维护一个组件的参数约束、内部响应式数据以及内部私有变量。
组件状态数据是组件开发中最为常用的功能之一。

当打开一个组件或页面文件时,工作台左侧菜单中会显示组件数据菜单,点击后即可打开组件数据面板。
从数据使用的角度出发,可将其分为以下几类 输入参数(props)、 响应数据(model)、内部私有属性,接下来我们来详细讲解下这三种数据的用途和如何声明一个属性/参数。
这是当前组件所需要的参数。这些参数具有响应式特点,一旦外部使用者传递的参数发生变化,会立即通知并更新组件内部的 DOM 节点。这意味着,组件能够实时响应外部传入数据的变动,从而动态调整自身的显示与行为,大大增强了组件的灵活性与复用性。例如,一个按钮组件可能通过 props 接收按钮的文本内容、颜色等参数,当外部传入的文本或颜色改变时,按钮能立刻呈现相应的变化。
仅在组件类型文件内才会展示传入参数的配置。页面类型的组件不允许配置接受参数。
我们可以在输入参数(props)面板右侧的加号来打开参数创建面板,在创建参数面板中我们可以配置参数的名称、备注、类型、默认值、演示值。属性创建教程,请阅读本章最后属性/参数创建和编辑小结。

创建完参数后便可开始使用,下面将从两个角度为您详细介绍:
在完成参数创建后,即可在组件内部使用所创建的参数。这些参数可在布局模板和方法逻辑中使用:
props.引用参数变量。
this.props. 的方式读取组件参数值。
贴心提示:若您不太熟悉代码编写,无需过度担忧。平台具备智能的数据管理功能,在表达式编辑面板中会提供智能语法提示,同时还设有数据管理面板。您可以在该面板中查看当前节点所使用的所有变量,只需点击即可快速使用相应变量。
当在其他组件或页面中引用当前组件时,点击该组件,即可在组件参数面板中看到已声明的参数。

重要建议:对组件参数进行声明时,务必尽可能完整。建议提供参数说明、交互类型、演示值等信息,以便开发人员能快速了解该属性的用途。
这是组件内部的响应数据。在组件装载开始前,该属性会被“劫持”,进而具备数据响应能力。也就是说,当这个内部数据发生改变时,与之相关联的组件部分会自动更新。比如在一个购物车组件中,商品数量作为响应数据,当数量改变时,购物车的总价显示、商品列表的渲染等相关部分会自动更新,为用户提供实时反馈。
我们可以在响应数据(model)面板右侧的加号来打开参数创建面板,在创建属性面板中我们可以配置参数的名称、备注、类型、默认值、演示值。属性创建教程,请阅读本章最后属性/参数创建和编辑小结。

在这里,我们借助一个 DEMO 来深入理解什么是响应式数据。响应式数据能够在一个值发生变更后,立即通知监听者。在布局模板里,一旦值有所变更,这种变化也会即刻在页面中实现更新。
我们通过代码定义了一个响应式数据count。当点击页面上的按钮时,count的值会加一,并且值变更后,页面会马上体现出这一变化 。
在完成属性创建后,即可在组件内部使用所创建的属性。这些属性可在布局模板和方法逻辑中使用:
model.引用参数变量。
this.model. 的方式读取组件参数值。
贴心提示:若您不太熟悉代码编写,无需过度担忧。平台具备智能的数据管理功能,在表达式编辑面板中会提供智能语法提示,同时还设有数据管理面板。您可以在该面板中查看当前节点所使用的所有变量,只需点击即可快速使用相应变量。
这类属性既不支持外部调用,也不具备响应式能力,仅作为组件内部临时使用的变量。在这里,你可以声明内部动态数据变量,方便在多个方法中使用。例如,在一个复杂的表单组件中,可能需要一个临时变量来记录表单填写的步骤状态,这个变量只在组件内部的方法中使用,无需对外暴露,也不需要对其变化做出响应式更新。
我们可以在内部私有属性面板右侧的加号来打开参数创建面板,在创建属性面板中我们可以配置参数的名称、备注、类型、默认值、演示值。属性创建教程,请阅读本章最后属性/参数创建和编辑小结。

它的使用方式与参数、响应数据一致,均可通过表达式的方式直接调用。不过,它与响应式数据不同之处在于,它不具备响应式能力。因此,如果该值在组件运行时会发生变更,那么不建议以私有属性的方式在模板中展现。
通常情况下,我们会在多个逻辑方法中定义一个公用属性,以此完成特定的业务逻辑。由于它不具备响应能力,所以既不会造成额外的性能开销,也不会污染原始数据。
这里我们来讲解一下参数属性的编辑面板的操作流程。(属性和参数的创建面板基本一致,只是存在部分属性的差异,在讲解时我们会特别标注,请仔细阅读。)



String)Number)Boolean)Array)Object)Function)Date)Any)undefined)。若当前属性类型被配置为:数组/对象时,会在第二步展现深层类型设计面板,我们可以在这里配置对象或数组的内部属性类型。

内部属性设计面板中的要素和上述内容基本一致,可参考上述功能描述。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。