零基础开始学习鸿蒙开发-@State的使用以及定义

1.@State组件介绍

        首先定义  @State为鸿蒙开发的一个状态组件,当它修饰的组件发生改变时,UI也会相应的刷新,简单介绍就是这样,下面我们用代码去体会一下。

2.定义DeliverParam类

        首先定义一个模型类,类里面定义一个构造函数,即constructor方法,这个方法主要是初始化类的成员变量,给成变量赋值。

class DeliverParam {public value: string;constructor(value: string) {this.value = value;}
}

3.自定义MySate组件

        用于调用DeliverParam类,并且初始化成员变量value,并且用@state修饰count计数器,通过点击按钮来观察数值的变化。

@Component
struct MySate {@State title: DeliverParam = new DeliverParam('你好,小度');@State count: number = 0;private increaseBy: number = 1;build() {Column() {Text(`${this.title.value}`).margin(10)Button(`点击改变内容`).onClick(() => {// @State变量的更新将触发上面的Text组件内容更新this.title.value = this.title.value === '你好,小度' ? '我在' : '你好,小度';}).width(300).margin(10)Button(`点我数值增加 = ${this.count}`).onClick(() => {// @State变量的更新将触发该Button组件的内容更新this.count += this.increaseBy;}).width(300).margin(10).backgroundColor( Color.Orange)}}
}

4.定义入口类,调用MySate组件,监听被修饰的DeliverParam的成员value值和count值的变化。

@Entry
@Component
struct EntrySate {build() {Column() {// 此处指定的参数都将在初始渲染时覆盖本地定义的默认值,并不是所有的参数都需要从父组件初始化MySate({ count: 1, increaseBy: 2 }).width(300)// MyComponent({ title: new Model('Hello World 2'), count: 7 })}}
}

5.完整代码如下:

class DeliverParam {public value: string;constructor(value: string) {this.value = value;}
}@Entry
@Component
struct EntrySate {build() {Column() {// 此处指定的参数都将在初始渲染时覆盖本地定义的默认值,并不是所有的参数都需要从父组件初始化MySate({ count: 1, increaseBy: 2 }).width(300)// MyComponent({ title: new Model('Hello World 2'), count: 7 })}}
}@Component
struct MySate {@State title: DeliverParam = new DeliverParam('你好,小度');@State count: number = 0;private increaseBy: number = 1;build() {Column() {Text(`${this.title.value}`).margin(10)Button(`点击改变内容`).onClick(() => {// @State变量的更新将触发上面的Text组件内容更新this.title.value = this.title.value === '你好,小度' ? '我在' : '你好,小度';}).width(300).margin(10)Button(`点我数值增加 = ${this.count}`).onClick(() => {// @State变量的更新将触发该Button组件的内容更新this.count += this.increaseBy;}).width(300).margin(10).backgroundColor( Color.Orange)}}
}

6.总结:通过上述观察不难发现,@sate既可以绑定某个类,也可以绑定某个值,既可通过父类影响子类,也可以通过子类影响父类的变化。

7.下面是运行效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/351513.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓在Fragment控制状态栏显示隐藏

废话不多上效果 隐藏 显示 核心代码 首先是Framgrent package com.zx.tab;import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button;impor…

技巧解析,如何向Kimi提问才能写出更好的论文?

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 今天为大家整理、分享的Kimi提问技巧,将对论文写作的各个阶段提供帮助,可以以此来辅助学术论文撰写。 在此之前,先为大家科普一个概念——信息熵&am…

爱了爱了,11款超良心App推荐!

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/今天,我们向你推荐十款与众不同但又不错的win10软件,它们都有各自的功能和优点,相信你一定会喜欢。 1.图片处…

618大促背后的智能力量:天润融通如何用AI大模型提升客户服务?

五一结束之后,消费零售企业马上又要进入一场紧锣密鼓的新战斗——618,一场上半年最重要的促销活动。 对品牌和商家来说,每年618都是一场新考验。因为618时间有限,而消费趋势总是在不断变化,市场竞争又越来越激烈。如何…

Oracle 入门--前提

目录 1.sqlplus 2.dual是什么? 3.SQL语句的种类 4.Oracle是如何工作的 5.Oracle查看配置文件 6.修改配置文件 7.常用的参数设置 1.sqlplus 管理数据库:启动,关闭,创建,删除对象......查看数据库的运行状态&…

创建STM32F10X空项目教程

创建STM32F10X系列的空项目工程 官网下载STM32标准外设软件库 STM32标准外设软件库 创建一个空文件夹作为主工程文件夹在主工程文件夹中,创建三个空文件夹 CMSIS - 存放内核函数及启动引导文件 FWLIB - 存放库函数 USER - 存放用户的函数将STM32标准外设软件库文件…

扫地机LiDAR形态之美

石头扫地机V20 LiDAR: Flash光源和Spot光源切换 图来自 Robot森 LiDAR(Light Detection and Ranging,激光雷达)技术在扫地机器人中的应用,不仅提升了机器的智能性和实用性,还展现了一种科技与艺术的融合之美。 一、外观设计的精致性 紧凑与轻巧:扫地机器人的LiDAR传感器…

活动集锦 | 英码科技积极参与行业盛会,AI赋能城市数字化转型

在当今数字经济时代,城市全域数字化转型已经成为提升城市管理效能、优化资源配置、推动经济发展的重要手段。英码科技始终致力于为企业打造高效、低成本的行业应用方案,助力企业实现数字化转型。近日,英码科技受邀参加了多场行业展示活动&…

reflutter工具实践之--xx一番赏app

此文章已经录制b站视频: flutter逆向案例-某某一番赏_哔哩哔哩_bilibili 一、工具介绍--reFlutter 这个框架帮助 Flutter 应用逆向工程,使用 Flutter 库的补丁版本,该版本已经编译并准备好重新打包应用。此库修改了快照反序列化过程&#…

kafka生产消费流程

kafka数据写入流程 1.生产者先从zookeeper的"/brokers/topic/主题名/partitions/分区名/state"节点找到该partition的leader 生产者在ZK中找到对应的broker broker进程上的leader将消息写入到本地log中。 follower从leader上拉取消息,写入到本地log&…

集成学习方法:Bagging与Boosting的应用与优势

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

实战计算机网络02——物理层

实战计算机网络02——物理层 1、物理层实现的功能2、数据与信号2.1 数据通信模型2.2 通信领域常用术语2.3 模拟信号和数字信号 3、信道和调制3.1 信道3.2 单工通信、半双工通信、全双工通信3.3 调制3.4 奈式准则3.5 香农定律 4、传输媒体4.1 导向传输媒体4.2 非导向传输媒体 5、…

Java课程设计:基于ssm的旅游管理系统系统(内附源码)

文章目录 一、项目介绍二、项目展示三、源码展示四、源码获取 一、项目介绍 2023年处于信息科技高速发展的大背景之下。在今天,缺少手机和电脑几乎已经成为不可能的事情,人们生活中已经难以离开手机和电脑。针对增加的成本管理和操作,各大旅行社非常必要…

LINUX网络FTP服务

一、FTP服务 FTP服务:file transfer protocol :文件传输协议。在网络上进行双向传输,也是一个应用程序。不同的操作系统有不同的FTP软件,但使用的协议是一样的。 FTP协议基于TCP协议,有两个端口,即20和21。 20端口&…

书生·浦语大模型实战营第二期作业六

1、安装环境: 2、安装legent和agentlego: 3、部署apiserver: 4、legent web demo: 5、没搜到,很尴尬: 6、自定义工具: 7、智能体“乐高”: 8、智能体工具,识别图片&#…

嵌入式数据库的一般架构

嵌入式数据库的架构与应用对象紧密相关,其架构是以内存、文件和网络等三种方式为主。 1.基于内存的数据库系统 基于内存的数据库系统中比较典型的产品是每个McObject公司的eXtremeDB嵌入式数据库,2013年3月推出5.0版,它采用内存数据结构&…

嵌入式实训day5

1、 from machine import Pin import time # 定义按键引脚控制对象 key1 Pin(27,Pin.IN, Pin.PULL UP) key2 Pin(26,Pin.IN, Pin.PULL UP)led1 Pin(15,Pin.ouT, value0) led2 Pin(2,Pin.ouT, value0) led3 Pin(0,Pin.ouT, value0) # 定义key1按键中断处理函数 def key1 ir…

爱心代码来喽

今天给大家分享一个爱心代码&#xff0c;送给我的粉丝们。愿你们天天开心&#xff0c;事事顺利&#xff0c;学业和事业有成。 下面是运行代码&#xff1a; #include<stdio.h> #include<Windows.h> int main() { system(" color 0c"); printf(&q…

低代码开发MES系统,一周实现数字化

随着工业4.0和智能制造的兴起&#xff0c;企业对于生产过程的数字化、智能化需求日益迫切。制造执行系统&#xff08;MES&#xff09;作为连接计划层与控制层的关键信息系统&#xff0c;在提升生产效率、优化资源配置、保障产品质量等方面发挥着重要作用。然而&#xff0c;传统…

理解DDD设计

DDD的理解 领域驱动设计&#xff08;Domain-Driven Design&#xff0c;DDD&#xff09;是一种软件开发方法论&#xff0c;强调将业务领域作为软件设计的核心&#xff0c;以便更好地满足业务需求。DDD认为&#xff0c;软件开发的核心是理解业务&#xff0c;而不是实现技术。在D…