2026/6/20 10:20:55
网站建设
项目流程
建网站的目的是什么,商城平台网站开发深圳,广州工程建设网站,建筑人才网招聘网前程无忧为了增强子组件接受外部参数输入的能力#xff0c;开发者可以使用Param装饰器。
Param不仅可以接受组件外部输入#xff0c;还可以接受Local的同步变化。在阅读本文档前#xff0c;建议提前阅读#xff1a;Local。
说明
从API version 12开始#xff0c;在ComponentV2装…为了增强子组件接受外部参数输入的能力开发者可以使用Param装饰器。Param不仅可以接受组件外部输入还可以接受Local的同步变化。在阅读本文档前建议提前阅读Local。说明从API version 12开始在ComponentV2装饰的自定义组件中支持使用Param装饰器。从API version 12开始该装饰器支持在元服务中使用。概述Param表示组件从外部传入的状态使得父子组件之间的数据能够进行同步Param装饰的变量支持本地初始化但不允许在组件内部直接修改。被Param装饰的变量能够在初始化自定义组件时从外部传入当数据源也是状态变量时数据源的修改会同步给Param。Param可以接受任意类型的数据源包括普通变量、状态变量、常量、函数返回值等。Param装饰的变量变化时会刷新该变量关联的组件。Param支持对基本类型如number、boolean、string、Object、class、内嵌类型如Array、Set、Map、Date以及null、undefined和联合类型进行观测。对于复杂类型如类对象Param会接受数据源的引用。在组件内可以修改类对象中的属性该修改会同步到数据源。Param的观测能力仅限于被装饰的变量本身。详见观察变化。状态管理V1版本接受外部传入的装饰器的局限性状态管理V1存在多种可接受外部传入的装饰器常用的有State、Prop、Link、ObjectLink。这些装饰器使用有限制且不易区分不当使用会导致性能问题。State仅能在初始化时接收父组件传递的的info对象父组件改变info之后无法同步。Prop虽然能够进行单向同步但是对于较复杂的类型来说深拷贝性能较差。Link能够接受传入的引用进行双向同步但它必须要求数据源也是状态变量因此无法接受info中的成员属性region。ObjectLink能够接受类成员属性但是要求该属性类型必须为Observed装饰的类。装饰器的不同限制使得父子组件之间的传值规则复杂、不易使用。因此推出Param装饰器表示组件从外部传入的状态。装饰器说明Param变量装饰器说明装饰器参数无。能否本地修改否。若需要修改值可使用Param搭配Once修改子组件的本地值。或通过Event装饰器修改Param数据源的值。同步类型由父到子单向同步。允许装饰的变量类型Object、class、string、number、boolean、enum等基本类型以及Array、Date、Map、Set等内嵌类型。支持null、undefined以及联合类型。被装饰变量的初始值允许本地初始化若不在本地初始化则需要和Require装饰器一起使用要求必须从外部传入初始化。变量传递传递规则说明从父组件初始化Param装饰的变量允许本地初始化若无本地初始化则必须从外部传入初始化。当同时存在本地初始值与外部传入值时优先使用外部传入值进行初始化。初始化子组件Param装饰的变量可以初始化子组件中Param装饰的变量。同步Param可以和父组件传入的状态变量数据源即Local或Param装饰的变量进行同步当数据源发生变化时会将修改同步给子组件的Param。观察变化使用Param装饰的变量具有被观测变化的能力。当装饰的变量发生变化时会触发该变量绑定的UI组件刷新。例子参考鸿蒙中级课程笔记2—状态管理V2—Param——观察变化当装饰的变量类型为boolean、string、number类型时可观察父组件中数据源同步变化。当装饰的变量类型为类对象时仅可以观察到对类对象整体赋值的变化无法直接观察到对类成员属性赋值的变化对类成员属性的观察依赖ObservedV2和Trace装饰器。装饰的变量为简单类型数组时可观察数组整体或数组项变化。当装饰的变量是嵌套类或对象数组时Param无法观察深层对象属性的变化。对深层对象属性的观测依赖ObservedV2与Trace装饰器。装饰的变量为内置类型时可观察变量整体赋值和API调用的变化。类型可观测变化的APIArraypush, pop, shift, unshift, splice, copyWithin, fill, reverse, sortDatesetFullYear, setMonth, setDate, setHours, setMinutes, setSeconds, setMilliseconds, setTime, setUTCFullYear, setUTCMonth, setUTCDate, setUTCHours, setUTCMinutes, setUTCSeconds, setUTCMillisecondsMapset, clear, deleteSetadd, clear, deleteParam使用限制Param装饰器存在以下使用限制Param装饰器只能在ComponentV2装饰器的自定义组件中使用在Component中使用则编译报错。Param装饰的变量表示组件外部输入需要初始化。支持使用本地初始值或外部传入值进行初始化。当存在外部传入值时优先使用外部传入值。不允许既不使用本地初始值也不使用外部传入值。使用Param装饰的变量在子组件中无法被直接修改。但是如果装饰的变量是对象类型在子组件中可以修改对象的属性并且会同步到父组件数据源上。使用场景从父组件到子组件变量传递与同步Param能够接受父组件Local或Param传递的数据并与之变化同步。装饰Array类型变量Param装饰Array类型变量可以观察到数据源对Array整体的赋值以及调用Array的接口push, pop, shift, unshift, splice, copyWithin, fill, reverse, sort带来的变化。装饰Date类型变量Param装饰Date类型变量可以观察到数据源对Date整体的赋值以及调用Date的接口setFullYear, setMonth, setDate, setHours, setMinutes, setSeconds, setMilliseconds, setTime, setUTCFullYear, setUTCMonth, setUTCDate, setUTCHours, setUTCMinutes, setUTCSeconds, setUTCMilliseconds带来的变化。装饰Map类型变量Param装饰Map类型变量可以观察到数据源对Map整体的赋值以及调用Map的接口set, clear, delete带来的变化。装饰Set类型变量Param装饰Set类型变量可以观察到数据源对Set整体的赋值以及调用Set的接口add, clear, delete带来的变化。联合类型Param支持null、undefined以及联合类型。以下示例中count类型为number | undefined点击改变count的类型时UI会自动刷新。