HarmonyOS 鸿蒙Next:failed validation: 'undefined, null, number, boolean, string, or Object but not function, attempt to assign value type'

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

HarmonyOS 鸿蒙Next:failed validation: 'undefined, null, number, boolean, string, or Object but not function, attempt to assign value type’

定义了一个组件,export struct SegmentedControl {

  @Prop onSelected: (index: number) => void

}

然后在Page里这么调用它: SegmentedControl({onSelected: (index) => {

          this.selectedTab = index

        }

      })

这么使用,然后Preview时会报错: ‘onSelected’: failed validation: 'undefined, null, number, boolean, string, or Object but not function, attempt to assign value type: ‘function’, value: ‘undefined’!

怎么回事啊?怎么声明这个onSelected啊?

9 回复

可以传入一个对象解决该问题

例子如下:

```

export interface Params {
click: () => void
}

@Component
export struct Child {
@Prop onTap: Params;

build() {
Text("点击父组件count+1").onClick(() => {
this.onTap?.click();
})
}
}

@Component
export struct Parent {
@State count: number = 1;

add() {
this.count++;
}

build() {
Column() {
Text("这里是父组件")
Text(this.count.toString());
Child({
onTap: {
click: () => {
this.add()
}
}
})

Child({
onTap: {
click: this.add.bind(this)
}
})

Text("下面是错误写法,this指向不正确")
Child({
onTap: {
click: this.add
}
})
}
}
}

```

校验状态变量不支持的类型。

状态变量对于不支持的类型,比如function,抛出运行时报错来提示开发者。

https://developer.huawei.com/consumer/cn/doc/harmonyos-releases-V1/changelogs-arkui-0000001666570209-V1

兄弟,最后怎么写的,我也遇到这个问题了

请问这个解决了吗?

好了,多谢了

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

请问这个怎么解决的?

是因为父组件传的this.selectedTab中的this丢失了吧,你试试用bind绑定一下this

针对您提到的HarmonyOS 鸿蒙Next开发过程中遇到的“failed validation”错误,这通常意味着在数据验证或类型检查环节出现了不匹配。错误信息表明尝试赋值的类型是一个函数,而期望的类型是undefinednullnumberbooleanstringObject

这种类型错误常见于以下几种情况:

  1. 数据绑定错误:在数据绑定或状态更新时,可能不小心将函数作为值赋给了期望为其他基本数据类型的变量。
  2. 组件属性错误:为组件的属性错误地传递了函数,而该属性仅支持上述基本类型或对象。
  3. API使用不当:调用API时,传递的参数类型不符合API要求。

解决方法:

  • 检查数据源:确保所有数据源在赋值前已经正确转换为期望的数据类型。
  • 审查属性传递:在组件或模板中,仔细检查所有属性传递,确保没有错误地传递函数。
  • API文档查阅:再次查阅相关API的文档,确认所有参数的类型和用法。

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

回到顶部