HarmonyOS 鸿蒙Next @State修饰的变量无法初始化

HarmonyOS 鸿蒙Next @State修饰的变量无法初始化

import pasteboard from ‘@ohos.pasteboard’;

@Component export struct listComponent { @State ItemTouch: Boolean = false; private url: string; private SignNumber: string; private password: string;

build() { Row() { Text(this.url) .width(‘30%’) .height(35) .fontSize(15) .fontWeight(400) .textAlign(TextAlign.Center) Text(this.SignNumber) .width(‘40%’) .height(35) .fontSize(13) .fontWeight(400) .textAlign(TextAlign.Center) .gesture(LongPressGesture({ repeat: false }) .onAction((event: GestureEvent) => { pasteboard.createData(‘text/plain’, this.SignNumber) })) Text(this.password) .width(‘30%’) .height(35) .fontSize(13) .fontWeight(400) .textAlign(TextAlign.Center) .gesture(LongPressGesture({ repeat: false }) .onAction((event: GestureEvent) => { pasteboard.createData(‘text/plain’, this.password) })) } .width(‘100%’) .height(40) .onClick(() => { this.ItemTouch = !this.ItemTouch; console.log(${this.ItemTouch}) }) .backgroundColor(this.ItemTouch ? Color.Gray : Color.White) } }

如果去掉@State装饰变量就能正常初始化以及


更多关于HarmonyOS 鸿蒙Next @State修饰的变量无法初始化的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

@State itemTouch: boolean = false;

boolean 首字母小写, 变量类型首字母都小写, 注意注意!

更多关于HarmonyOS 鸿蒙Next @State修饰的变量无法初始化的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我也遇到这个问题,我上次查了40分钟发现是String。提示词是大写的,就很。。。

太感谢大佬了,

已经解决了。

在HarmonyOS鸿蒙Next中,[@State](/user/State)修饰的变量用于声明一个状态变量,该变量会在UI中自动更新。如果[@State](/user/State)修饰的变量无法初始化,可能是由于以下原因:

  1. 变量未在组件中声明:[@State](/user/State)变量必须在组件的structclass中声明,不能在其他地方声明或初始化。

  2. 变量未赋值:[@State](/user/State)变量在声明时必须赋予初始值,否则会报错。例如:

    [@State](/user/State) myVariable: string = 'initial value';
    
  3. 变量类型不匹配:[@State](/user/State)变量的类型必须与赋值的初始值类型一致,否则会导致初始化失败。

  4. 变量作用域问题:[@State](/user/State)变量的作用域仅限于当前组件,不能在组件外部访问或修改。

  5. 变量被重复声明:如果[@State](/user/State)变量在同一个作用域内被重复声明,会导致初始化失败。

  6. 变量命名冲突:[@State](/user/State)变量的名称不能与组件的其他属性或方法名称冲突。

  7. 变量未在build方法中使用:[@State](/user/State)变量必须在build方法中使用,否则可能会被编译器优化掉,导致初始化失败。

如果以上原因均不适用,建议检查代码逻辑和编译环境,确保没有其他隐藏的错误。

在HarmonyOS的鸿蒙Next中,@State修饰的变量用于声明状态数据,并且这些变量通常由框架管理。@State变量不允许在声明时直接初始化,因为它们的初始值通常是通过父组件传递或在aboutToAppear等生命周期方法中设置的。如果需要初始化,可以在组件的生命周期方法(如aboutToAppear)中进行赋值。这样可以确保状态变量在组件渲染时具有正确的初始值。

回到顶部