HarmonyOS 鸿蒙Next PersistentStorage案例中点击文本数值异常递增问题,请修改bug或补充说明原因

发布于 1周前 作者 caililin 来自 鸿蒙OS

HarmonyOS 鸿蒙Next PersistentStorage案例中点击文本数值异常递增问题,请修改bug或补充说明原因

PersistentStorage.PersistProp(‘aProp’, 47);

@Entry
@Component
struct Index {
@State message: string = ‘Hello World’
@StorageLink(‘aProp’) aProp: number = 48

build() {
Row() {
Column() {
Text(this.message)
// 应用退出时会保存当前结果。重新启动后,会显示上一次的保存结果
Text(${this.aProp})
.onClick(() => {
this.aProp += 1;
})
}
}
}
}

2 回复
从现象看,这个变量被认成字符串了,检查一下初始化有没有传类型入参

针对您提到的HarmonyOS 鸿蒙Next PersistentStorage案例中点击文本数值异常递增的问题,以下是对该问题的专业分析和解决方案:

从现象来看,问题出现在变量被错误地识别为字符串并进行了字符串拼接,而非数值累加。这通常是由于初始化时没有正确传递类型参数或在处理存储数据时类型不匹配所导致。

在您的代码中,@StorageLink('aProp') aProp: number = 48; 表明 aProp 应该是一个数值类型。然而,当您尝试通过 this.aProp += 1; 来递增它时,如果 aProp 在某处被当作字符串处理,就会发生字符串拼接而不是数值累加。

为了解决这个问题,请确保 aProp 在整个代码生命周期中都被当作数值类型来处理。特别是检查任何可能影响 aProp 类型的地方,例如从存储中读取数据时是否正确地转换了类型。

此外,您可以在递增 aProp 之前添加类型检查或转换逻辑,以确保它是数值类型。例如:

onClick(() => {
  this.aProp = Number(this.aProp) + 1;
})

这段代码会将 aProp 转换为数值(如果它不是的话),然后再进行递增操作。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部