HarmonyOS 鸿蒙Next Array .filter 操作符在构建页面时异常问题

发布于 1周前 作者 phonegap100 最后一次编辑是 5天前 来自 鸿蒙OS

使用了Array .filter 了之后构建布局异常。 问题代码如下:

export interface DragTableInfo {
  st1: string
  st2: string
  success: boolean
}

@Entry({ routeName: EntryUrlConstants.TABLE_TEST_1 })
@Component
export struct DragTableTest {
  @State datas: Array<DragTableInfo> =
    [{ st1: "测试1", st2: '测试2', success: true }, { st1: "测试1", st2: '测试2', success: false }]

  build() {
    Column() {
      DZToolBar({ title: '测试页面' })
      ForEach(this.datas.filter((data) => {
        data.success == true
      }), (item: DragTableInfo) => {
        Text(item.st1)
          .width('100%')
          .height(50)
          .textAlign(TextAlign.Center)
          .fontSize(18)
          .fontColor(Color.Red)
      })
    }.width('100%').height('100%')
  }
}

//如果把遍历的部分换成
ForEach(this.datas, (item: DragTableInfo) => {
  Text(item.st1)
    .width('100%')
    .height(50)
    .textAlign(TextAlign.Center)
    .fontSize(18)
    .fontColor(Color.Red)
})
//则能正常展示,但是按这个操作符的含义
this.datas.filter((data) => {
  data.success == true
}

应该也能遍历一个数据。而且断点调试,计算这个表达式 this.datas.filter((data)=>{ data.success == true } 也是有值的。 就是界面不展示,请问是什么原因。


更多关于HarmonyOS 鸿蒙Next Array .filter 操作符在构建页面时异常问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
filter函数需要return。改成 return data.success == true。

更多关于HarmonyOS 鸿蒙Next Array .filter 操作符在构建页面时异常问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,.filter 操作符在构建页面时异常,通常与数据绑定或流处理逻辑相关。具体到 .filter 操作符,它主要用于数组处理,筛选出符合特定条件的元素。在鸿蒙开发中,异常可能由以下几个原因引起:

  1. 数据源问题:确保传递给 .filter 的数组是有效的,且数组元素类型与过滤条件匹配。

  2. 过滤条件错误:检查过滤条件函数,确保它正确返回布尔值,并且没有抛出异常。

  3. 数据绑定问题:如果 .filter 结果直接绑定到页面组件上,确保组件能正确处理过滤后的数组类型。

  4. 生命周期管理:在页面生命周期中,如果数据或过滤条件在组件渲染后发生变化,可能导致不一致的状态。

  5. 性能问题:对于大型数组,.filter 操作可能比较耗时,影响页面性能,考虑优化或使用异步处理。

解决这些问题时,建议直接检查 .filter 使用上下文,包括数据源、过滤逻辑以及页面组件的数据绑定方式。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部