HarmonyOS 鸿蒙Next 响应式没反应
HarmonyOS 鸿蒙Next 响应式没反应
这是class
@Observed
export class ScreenshotObj{
path:string = ‘’
didClicked:boolean = false
isSelect: boolean = false
}
------------------------------------------------------------------
这是component
@Component
export struct ImageGridItemComponent {
/// 左边的index,切换时显示不同type 的item
@Consume(‘menuFocus’) menuFocus: number
// 视图中列表部分创建一个新的组件ListDataView,用ObjectLink接受数据。
@ObjectLink item: ScreenshotObj
@Link editState: boolean
@Link flag: boolean
build() {
RelativeContainer() {
Image(‘file://’ + this.item.path)
.alignRules({
left: { anchor: ‘container’, align: HorizontalAlign.Start },
right: { anchor: ‘container’, align: HorizontalAlign.End },
top: { anchor: ‘container’, align: VerticalAlign.Top },
bottom: { anchor: ‘container’, align: VerticalAlign.Bottom },
})
.objectFit(ImageFit.Cover)
.borderRadius(10)
.borderWidth(this.editState ? 2 : 0)
.borderColor(this.editState ? Color.Red : Color.Transparent)
Text(‘最新’)
.textAlign(TextAlign.Center)
.width(40)
.height(16)
.borderRadius(1000)
.fontColor(’#FFFFFF’)
.fontSize(10)
.backgroundColor(’#FF0000’)
.visibility(this.item.didClicked ? Visibility.Hidden : Visibility.Visible)
.alignRules({
right: { anchor: ‘container’, align: HorizontalAlign.End },
top: { anchor: ‘container’, align: VerticalAlign.Top },
})
// check_box_unselect check_box_select
Image(this.item.isSelect ? $r(‘app.media.check_box_select’) : $r(‘app.media.check_box_unselect’))
.alignRules({
right: { anchor: ‘container’, align: HorizontalAlign.End },
top: { anchor: ‘container’, align: VerticalAlign.Top },
})
.margin({
top: 4, right: 5
})
.width(16)
.visibility(this.editState ? Visibility.Visible : Visibility.Hidden)
.onClick(() => {
this.item.isSelect = !this.item.isSelect
emitter.emit({
eventId: RECODE_EVENT,
priority: emitter.EventPriority.HIGH
})
})
}
.width(‘100%’)
.height(‘100%’)
}
}
------------------------------------------------------------------
这个page的ui构建
ForEach(this.screenshotDatas, (item: ScreenshotObj, index: number) => {
GridItem() {
ImageGridItemComponent({
editState: this.editState,
item:item,
flag:this.flag /// 强制刷新也起不来作用
})
.width(‘100%’)
.height(90)
}
.scale({
x: index === this.optionFocus ? 1.1 : 1,
y: index === this.optionFocus ? 1.1 : 1,
})
.onClick(() => {
if (this.optionFocus === index) {
this.onA()
}
this.optionFocus = index
})
.animation({
duration: 200,
curve: Curve.EaseOut
})
}, (item: ScreenshotObj) => item.path)
我有一个fn
fn(){
this.screenshotDatas[this.optionFocus].isSelect = !this.screenshotDatas[this.optionFocus].isSelect
this.screenshotDatas.forEach(item=>console.warn(11111 item:${item.isSelect}
))
this.xKey = this.screenshotDatas[this.optionFocus].isSelect ? ‘取消选择’ : '选择’
this.flag = !this.flag
}
为什么在page里面的screenshotDatas的item已经改变,而component里面的item没有改变?
更多关于HarmonyOS 鸿蒙Next 响应式没反应的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
方便提供一个可复现的最小化demo吗,用您现在提供的代码不太容易复现问题
更多关于HarmonyOS 鸿蒙Next 响应式没反应的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
针对您提到的HarmonyOS 鸿蒙Next响应式没反应的问题,以下是一些可能的解决方案:
-
检查系统更新:
- 确保您的鸿蒙系统已更新到最新版本。新版本可能修复了旧版本中的响应性问题。
-
重启设备:
- 尝试重启您的鸿蒙设备,这有助于解决临时性的软件故障。
-
清理内存:
- 检查并清理设备的内存和存储空间,过多的后台应用或缓存可能导致系统响应变慢。
-
检查应用兼容性:
- 如果您在使用特定应用时遇到响应问题,请检查该应用是否与鸿蒙Next系统兼容。
-
恢复出厂设置:
- 在备份重要数据后,尝试将设备恢复出厂设置,以排除因系统设置或配置问题导致的响应性故障。
-
检查硬件问题:
- 排除软件因素后,若问题依旧存在,请检查设备是否存在硬件故障,如触摸屏失灵等。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。请提供详细的设备信息和问题描述,以便客服人员为您提供更具体的帮助。