Reactjs 如何从react js中的函数返回数组

Reactjs 如何从react js中的函数返回数组,reactjs,sharepoint,web-parts,spfx,sharepoint-2019,Reactjs,Sharepoint,Web Parts,Spfx,Sharepoint 2019,您好,我是react js新手,我正在调用getItem函数并将响应推送到一个数组并返回该数组,但在返回之前我得到的是空数组 private _LoadExpenses() { const items: IExpense[] = []; this._expensesDataProvider.getItems().then((expenses: IExpense[]) => { expenses.forEach(element => {

您好,我是react js新手,我正在调用getItem函数并将响应推送到一个数组并返回该数组,但在返回之前我得到的是空数组

  private _LoadExpenses() {
    const items: IExpense[] = [];
    this._expensesDataProvider.getItems().then((expenses: IExpense[]) => {
        expenses.forEach(element => {
          items.push({SGDDAppDate:element.SGDDAppDate,ExpenseCategory:element.ExpenseCategory,ExpenseType1:element.ExpenseType1});
       });
        return expenses;
    });
    //console.log(items)
    return items;
  }

阻止此操作后。\ U expensesDataProvider完成console.log(项),它必须为空。我认为getItems()是异步的,所以在数据到达并在items数组中推送项之前,您需要控制台记录为空的项

您需要在返回费用之前进行console.log(项目)

如果您需要为以后的用户返回项目,您可以将代码包装在Promise中并返回一个Promise,然后每次您需要必须使用的项目时都返回一个Promise


因为一旦“this.\u expensesDataProvider”运行,“return items”就会运行,此时项目为空。

我的示例异步函数代码:

private async _getListData(): Promise<IReactItem[]> {
  return pnp.sp.web.lists.getByTitle("TestList").items.select("Id,Title,Description,User/ID,User/EMail").expand("User").get().then((response:IReactItem[]) => {
    return response;
  });
}
为您的代码

尝试:

private\u LoadExpenses():Promise{
返回此。_expensesDataProvider.getItems()。然后((费用:IEExpense[])=>{
退货费用;
});  
}

expenses数组必须为空,这就是为什么forEach没有执行,因此空数组是\u expensesDataProvider.getItems()异步的原因?如果是这样的话,你应该有一些等待声明。此外,我更愿意使用组件的状态,而不是直接返回数组。感谢您的回复。是的,我在退货费用之前收到,但之后它就空了。我需要退货
this._getListData().then(items=>{
    console.log(items);
  });
private _LoadExpenses(): Promise<IExpense[]> {  
  return this._expensesDataProvider.getItems().then((expenses: IExpense[]) => {      
      return expenses;
  });  
}