如何从React JS中的函数返回数组

问题描述 投票:0回答:2

您好,我是新来响应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;
  }
reactjs sharepoint web-parts spfx sharepoint-2019
2个回答
0
投票
阻止this._expensesDataProvider结束后,您console.log(items)必须为空。而且我认为getItems()是异步的,因此在数据到达并将项目推入items数组之前,请进行console.log记录为空的项目。

您在退还费用之前需要console.log(items);

并且如果您以后需要返回项目,则用户u可以将代码包装在Promise中并返回Promise,那么每次需要使用项目时,都必须使用.then,例如此示例=> https://codesandbox.io/s/kind-rhodes-w1twf

因为一旦“ this._expensesDataProvider”运行,然后将运行“返回项目”,并且此时项目为空。


0
投票
我的示例异步功能代码:

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; }); }

调用函数:

this._getListData().then(items=>{ console.log(items); });

为您的代码。

尝试:

private _LoadExpenses(): Promise<IExpense[]> { return this._expensesDataProvider.getItems().then((expenses: IExpense[]) => { return expenses; }); }

© www.soinside.com 2019 - 2024. All rights reserved.