首页 > 其他分享 >鸿蒙Next内置组件双向同步$$使用方法总结

鸿蒙Next内置组件双向同步$$使用方法总结

时间:2024-12-13 09:35:03浏览次数:6  
标签:10 内置 变量 鸿蒙 text 绑定 Next selected 组件

一、$$语法概述

在鸿蒙Next开发中,$$语法为系统内置组件提供了一种强大的双向同步机制,用于实现TypeScript(TS)变量与系统内置组件内部状态之间的同步。这一特性使得开发者能够更加便捷地管理组件状态,确保用户界面(UI)与应用数据的一致性,提升用户体验。

二、使用规则

(一)变量类型支持

  1. 基础类型变量:包括数字(如number)、字符串(string)、布尔值(boolean)等常见的基础数据类型。这些基础类型变量可以直接与支持$$语法的内置组件属性进行双向绑定,实现数据的同步更新。
  2. 装饰器修饰的变量
    • @State装饰的变量:用于在组件内部管理本地状态,$$能够使其与组件属性保持同步,方便在组件内部响应状态变化并更新UI。
    • @Link装饰的变量:主要用于实现父子组件或不同组件之间的双向数据绑定,通过$$,可以确保数据在多个组件间的一致性传递和同步更新。
    • @Prop装饰的变量:用于组件间的数据传递,$$语法使这些传递的数据与组件内部状态实时同步,便于组件间的协同工作。

(二)支持的内置组件及属性

以下是部分支持$$语法的内置组件及其对应的属性(起始API版本如表格所示):

组件 属性 起始API版本
Checkbox select 10
CheckboxGroup selectAll 10
DatePicker selected 10
TimePicker selected 10
MenuItem selected 10
Panel mode 10
Radio checked 10
Rating rating 10
Search value 10
SideBarContainer showSideBar 10
Slider value 10
Stepper index 10
Swiper index 10
Tabs index 10
TextArea text 10
TextInput text 10
TextPicker selectedvalue 10
Toggle isOn 10
AlphabetIndexer selected 10
Select selectedvalue 10
BindSheet isShow 10
BindContentCover isShow 10
Refresh refreshing 8
GridItem selected 10
ListItem selected 10

(三)同步机制

  1. 当使用$$语法将TS变量与组件属性绑定后,任何一方的变化都会立即触发另一方的更新。例如,若绑定的变量值发生改变,组件会自动刷新以显示新的值;反之,当用户在组件中进行操作导致组件属性变化时,绑定的变量也会同步更新,从而保证数据的一致性。

三、使用示例

(一)以TextInput组件为例

  1. 假设我们有一个简单的输入框场景,希望实时获取用户输入的文本并进行处理。
// xxx.ets
@Entry
@Component
struct TextInputExample {
  // 使用@State装饰器声明一个text变量,用于存储输入框中的文本
  @State text: string = ''
  // 创建一个TextInputController实例,用于控制TextInput组件的行为(可选,根据需求)
  controller: TextInputController = new TextInputController()
  build() {
    Column({ space: 20 }) {
      // 显示当前text变量的值
      Text(this.text)
      // 使用$$语法将text变量与TextInput组件的text参数绑定,实现双向同步
      TextInput({ text: $$this.text, placeholder: 'input your word...', controller: this.controller })
     .placeholderColor(Color.Grey)
     .placeholderFont({ size: 14, weight: 400 })
     .caretColor(Color.Blue)
     .width(300)
    }.width('100%').height('100%').justifyContent(FlexAlign.Center)
  }
}
  1. 在上述代码中:
    • 首先,通过@State声明了text变量,并初始化为空字符串。
    • 然后,在TextInput组件中,使用$$this.texttext变量与组件的text参数进行绑定。
    • 当用户在输入框中输入文本时,text变量会实时更新,同时Text组件会显示最新的输入内容。反之,如果在代码中修改text变量的值,输入框中的显示也会相应改变。

(二)其他组件的类似用法

  1. 对于其他支持$$语法的组件,使用方法类似。例如,对于Checkbox组件:
@Entry
@Component
struct CheckboxExample {
  @State isChecked: boolean = false
  build() {
    Column {
      Checkbox({ select: $$this.isChecked })
      Text(`Checkbox is ${this.isChecked? 'checked' : 'unchecked'}`)
    }
  }
}
  1. 这里,@State装饰的isChecked变量与Checkbox组件的select属性通过$$绑定。当用户点击复选框改变其状态时,isChecked变量会更新,Text组件也会显示相应的提示信息。

四、注意事项

  1. 虽然$$语法在双向同步方面提供了很大的便利,但开发者需要谨慎使用,避免过度复杂的双向绑定关系导致代码难以维护。在设计组件和状态管理时,应尽量遵循清晰、简洁的原则,确保数据流向的可理解性。
  2. 注意$$语法在不同组件和属性上的行为可能存在细微差异,尤其是在处理复杂组件或涉及多个状态变量的情况下。开发者应充分测试不同场景下的功能,以确保应用的稳定性和正确性。
  3. 当与其他状态管理机制(如AppStorageLocalStorage等)结合使用时,要注意避免冲突和不必要的重复操作,确保整个应用的状态管理逻辑协调一致。例如,如果同时使用$$绑定和AppStorage进行状态管理,需要明确各自的职责和数据更新时机,避免数据不一致的问题。

标签:10,内置,变量,鸿蒙,text,绑定,Next,selected,组件
From: https://www.cnblogs.com/freerain/p/18604165

相关文章

  • 鸿蒙Next状态变量Watch使用方法总结
    一、@Watch装饰器概述@Watch装饰器用于监听状态变量的变化,当被装饰的状态变量发生改变时,会触发对应的回调函数执行。其在ArkUI框架内部基于严格相等(===)来判断数值是否更新,仅当严格相等判断为false时,才会触发回调。这为开发者提供了一种有效的方式来响应状态变量的变化,从而实现应......
  • 鸿蒙应用开发:开机自启并自检网络状态
    公司要开发一个小玩意,主要用途就是监测远端软件包与本地安装包是否一致,如果不是则下载更新本地应用,并且要求开机会自检。现在来跟各位看官老爷们分享一下其中的一些关键,希望各位不吝指教!开机自启关于如何设置开机自启这篇文章已经讲的很详细了,请移步:OpenHarmony应用开机自启......
  • 鸿蒙UI布局-相对布局
    @Entry@ComponentstructIndex{@Statemessage:string='HelloWorld';build(){RelativeContainer(){Row().width(100).height(100).backgroundColor(Color.Black).alignRules({top:{anchor:'__container__',align......
  • 鸿蒙NEXT开发案例:保质期计算
     【引言】保质期计算应用是一个基于鸿蒙NEXT框架开发的数字和文本统计组件。用户可以输入商品的生产日期和保质期天数,应用会自动计算并展示相关信息,包括保质状态、剩余天数、生产日期和到期日期。【环境准备】•操作系统:Windows10•开发工具:DevEcoStudioNEXTBeta1Bu......
  • 鸿蒙开发(1)
    一、下载开发工具1、下载中心2、安装DevEcoStudioDevEcoStudio支持Windows和macOS系统,下面将针对两种操作系统的软件安装方式分别进行介绍。Windows环境运行环境要求为保证DevEcoStudio正常运行,建议电脑配置满足如下要求:操作系统:Windows1064位、Windows1164位内......
  • 鸿蒙Next环境设备查询Environment用法总结
    一、概述Environment是ArkUI框架在应用程序启动时创建的单例对象,用于提供一系列描述应用程序运行状态的属性,其所有属性不可变(应用不可写入)且为简单类型,主要为AppStorage提供设备环境相关信息,以辅助应用根据设备环境做出不同的处理逻辑。二、Environment内置参数accessibilityE......
  • 前端的 Python 入门指南(七):异步场景的实现方案对比 - 内置+显示事件循环 + async+await
    《前端的Python入门指南》系列文章:(一):常用语法和关键字对比(二):函数的定义、参数、作用域对比(三):数据类型对比-彻底的一切皆对象实现和包装对象异同(四):参数传递方式对比-值与引用传递vs可变不可变数据(五):面向对象特性之继承实现的方式对比-基于原型链和基于类各有什么......
  • 【鸿蒙 ArkTS 开发】网络请求HTTP并渲染列表展示
    1.页面布局和网络请求(展示产品信息)在这个页面中,我们会从网络获取产品数据,并使用List组件展示产品信息。product_list_page.etsimportui;import@ohos.net.http;importohos.agp.components.List;importohos.agp.components.Text;importohos.agp.components.Image;......
  • 鸿蒙NEXT开发案例:九宫格随机
     【引言】在鸿蒙NEXT开发中,九宫格抽奖是一个常见且有趣的应用场景。通过九宫格抽奖,用户可以随机获得不同奖品,增加互动性和趣味性。本文将介绍如何使用鸿蒙开发框架实现九宫格抽奖功能,并通过代码解析展示实现细节。【环境准备】•操作系统:Windows10•开发工具:DevEcoStud......
  • Next.js 14 实战:使用 App Router 构建高性能 React 应用
    "你们的网站加载速度太慢了,而且SEO效果很差。"上个月,我们接到了一个来自海外客户的紧急需求。他们的电商网站是用传统的ReactSPA构建的,在性能和搜索引擎优化方面都遇到了瓶颈。作为技术负责人,我立刻想到了Next.js14的AppRouter。......