为 spfx 反应中的函数返回未定义

returning undefined for the function in spfx react

尝试使用 2 列进行级联下拉。但它一直返回未定义。无法在下拉函数中设置状态

值正在控制台中返回,但无法设置状态

    private async test(getVal: any):promis<void> {
    ...
    
    var timePeriod = this.dropdown(getval.key);
    log(timePeriod)
    //returns undefined
    }
    
    public dropdown(val: string){
    sp.web.lists.getbytitle("").items.select("").filter("" + val + "'").getAll().the(function (data){
    log(data)
    for(var k in data){
    timePeriod.push({key:data[k].period, text: data[k].Period})
    }
    
    retur data;
    }
    
    )
    }

您的下拉功能没有正确返回。另外,您分享的代码片段中有几个拼写错误。

您需要在承诺处理程序之外创建一个变量,该变量将在您从 SharePoint API 获取数据后返回。

我已经更新了您的代码片段,展示了您是如何解决这个问题的。

public dropdown(val: string){
    let output = [];
    sp.web.lists.getbytitle("").items.select("").filter("" + val + "'").getAll().then(function (data){
        //console.log(data);
        for(var k in data){
            output.push({key:data[k].period, text: data[k].Period})
        }

        /** 
         * The return statement below doesn't have any effect on the outcome of the function 
         * as any return here is for the internal function of the success/error handler
         *
         *
         * return data;
        */
    } );
    return output;
}