赞
踩
在声明式UI中,是以状态驱动视图更新。
状态(state):指驱动视图更新的数据(被装饰器标记的变量)。
试图(view):基于UI描述渲染得到用户界面
举例
- @Entry
- @Component
- struct Index {
- @State message1: string = 'Harmony'
- @State message2: string = '遥遥领先!'
- @State imageWidth : number = 200
- build() {
- Row() {
- Column() {
- Text(this.message1)
- .onClick(()=>{
- this.message1 = "hello "
- })
- }
- }
- .height('100%')
- }

点击文字之后,Harmony变成hello文字。
改变一个对象的状态
首先我们需要声明一个对象
- // 声明一个内部类Person
- class Person{
- name:string
- age:number
- // 构造函数
- constructor(name:string,age:number) {
- this.name = name
- this.age = age
- }
- }
-
- // @Entry …………
-
- // 创建一个状态修饰的对象
- @State p:Person = new Person('Whz',21)
然后在屏幕上渲染出来
- Text(`${this.p.name}:${this.p.age}`)
- .fontSize(60)
- .onClick(() => {
- this.p.age++
- })
然后点击文本,年龄数值会增加1
按钮控制列表元素
- import router from '@ohos.router'
- import {Header} from '../components/herder'
- // 声明一个内部类Item
- class Person{
- name:string
- age:number
-
- constructor(name:string,age:number) {
- this.name = name
- this.age = age
- }
- }
- @Entry
- @Component
- struct Index {
- idx:number = 1
- @State message1: string = 'Harmony'
- @State message2: string = '遥遥领先!'
- @State imageWidth: number = 200
-
- // 创建一个状态修饰的对象
- @State p:Person = new Person('Ramos',21)
- // 创建一个数组
- @State list:Person[] = [
- new Person('Rose',20),
- new Person('White',19)
- ]
- build() {
- Row() {
- Column() {
- Header({ title: 'Hello World' })
- Image($r('app.media.image'))
- .width(this.imageWidth)
- .height(200)
- .borderRadius(20)
- Text(`${this.p.name}:${this.p.age}`)
- .fontSize(60)
- .onClick(() => {
- this.p.age++
- })
- // 增加按钮逻辑
- Button('增加').onClick((event: ClickEvent) => {
- this.list.push(new Person('人名'+ this.idx++,19))
- })
- ForEach(this.list,(p,index)=>{
- Row(){
- Text(`list中:${p.name},${p.age}`)
- // 删除按钮逻辑
- Button('删除')
- .onClick(()=>{
- this.list.splice(index,1)
- })
- }
- .width('90%')
- .justifyContent(FlexAlign.SpaceAround)
- })
- }
- .height('100%')
- }
- }}

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。