HarmonyOS 鸿蒙Next:传递 Prop修饰的obj到子函数中 手动进行undefined判断后仍然报错Object is probably undefined

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

HarmonyOS 鸿蒙Next:传递 Prop修饰的obj到子函数中 手动进行undefined判断后仍然报错Object is probably undefined

在某个struct中作为入参的@Prop修饰的object

@Prop suggestionObj: AssociateSuggestionModel = new AssociateSuggestionModel(0, ‘’, new QueryList(0, [], []));

现在需要用其中的data.fund这个数组的长度进行相关判断.我使用getSearchAssociateFundVisibility()判断报错Object is probabliy undefined

函数

export function getSearchAssociateFundVisibility(suggestionObj: AssociateSuggestionModel) {
    if(suggestionObj == undefined || (suggestionObj != undefined && suggestionObj.data.fund.length == 0)) {
        return Visibility.None 
    } else {
        return Visibility.Visible 
    }
}

在该struct中 AssociateSuggestionModel 数据结构具体定义如下

export class AssociateSuggestionModel {
    public status_code:number = 0;
    public status_msg:string = '';
    public data:QueryList = new QueryList(0,[],[]);

    constructor(status_code:number, status_msg:string,data:QueryList) {
        this.status_code= status_code;
        this.status_msg = status_msg;
        this.data = data;
    }
}
export class QueryList {
    public cost:number = 0;
    public fund?:Array<FundItem> = [];
    public query:Array<QueryItem> = [];

    constructor(cost:number, fund:Array<FundItem>, query:Array<QueryItem> ) {
        this.cost = cost;
        this.fund = fund;
        this.query = query;
    }
}

更多关于HarmonyOS 鸿蒙Next:传递 Prop修饰的obj到子函数中 手动进行undefined判断后仍然报错Object is probably undefined的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

非空判断不彻底,改成如下就不会报错:

if (suggestionObj == undefined || (suggestionObj != undefined && suggestionObj.data != undefined && suggestionObj.data.fund != undefined && suggestionObj.data.fund.length == 0))


另外这种需要较多判断的场景建议结合实际考虑适当使用非空断言运算符:

[https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/introduction-to-arkts-V5#](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/introduction-to-arkts-V5#)

更多关于HarmonyOS 鸿蒙Next:传递 Prop修饰的obj到子函数中 手动进行undefined判断后仍然报错Object is probably undefined的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对帖子标题“HarmonyOS 鸿蒙Next:传递 Prop修饰的obj到子函数中 手动进行undefined判断后仍然报错Object is probably undefined”的问题,以下是回答:

在HarmonyOS开发中,若你传递了一个通过Prop修饰的对象(obj)到子函数中,并在子函数中手动进行了undefined判断,但仍然遇到“Object is probably undefined”的错误,这通常意味着在判断和执行逻辑之间存在时间差或作用域问题。

可能的原因包括:

  1. 异步更新:对象可能在判断后、使用前被更新为undefined。检查对象的赋值和使用是否在同一个事件循环或状态更新周期内。

  2. 闭包问题:如果使用了闭包,确保闭包捕获的是正确的对象状态。

  3. Prop传递问题:检查Prop是否正确传递且未被意外修改。确保父组件传递的对象在子组件中正确接收。

  4. 条件渲染:如果对象依赖于条件渲染,确保在对象使用前条件已满足。

解决方法:

  • 确保对象在使用前已正确定义和赋值。
  • 使用可选链(?.)或空值合并运算符(??)来安全访问对象属性。
  • 重新审视代码逻辑,确保没有逻辑错误导致对象被意外置为undefined。

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

回到顶部