Reactjs 反应不';t等待获取的数据[已编辑]

Reactjs 反应不';t等待获取的数据[已编辑],reactjs,Reactjs,我在useffect()中为if提供了等待获取数据的条件。 invoice&&invoice['data']像这样 我的期望是setMoney()会起作用。但它只是传递这个函数 发票是从商店提取的数据。 这是视图组件。 import React,{useContext,useffect,useState}来自'React'; 导入“/invoice.scss”; 从“/invoice_filter”导入发票筛选器; 从“/invoice_table”导入发票表; 从'@/context/invo

我在
useffect()
中为
if
提供了等待获取数据的条件。
invoice&&invoice['data']
像这样
我的期望是
setMoney()
会起作用。但它只是传递这个函数
发票
是从商店提取的数据。

这是视图组件。

import React,{useContext,useffect,useState}来自'React';
导入“/invoice.scss”;
从“/invoice_filter”导入发票筛选器;
从“/invoice_table”导入发票表;
从'@/context/invoice_dataStore'导入{invoiceContext};
功能发票(道具){
const{invoice,getInvoiceInitialData}=useContext(invoiceContext);
const[应收账款,SetRecessive]=使用状态(0);
const[pending,setPending]=useState(0);
useffect(()=>{
如果(发票和发票[‘数据’]){
设置货币();
}
}, []);
函数setMoney(){
如果(发票和发票[‘数据’]){
const infoSt=invoice['data'].map((info)=>info);
infoSt.forEach((info)=>{
开关(信息状态){
案例100://应收账款
设置应收账款((前期)=>前期+信息金额);
打破
案件200://未决
setPending((上一个)=>上一个+信息金额);
打破
违约:
抛出新错误(“未知命令”);
}
});
}
}
返回(
${应收}
${pending}
);
}
出口默认发票;
  • 已编辑
    在使用
    useffect()
    之前,我只使用
    if
    来实现这一点
    我仍然不明白为什么这不起作用
if(发票和发票['data']){
设置货币();
}
因为这起作用了。

let showTable;
如果(发票和发票[‘数据’]){
showTable=发票['data'].地图((信息)=>
{info.title})
}
}
返回(
{可显示}
)

useffect
和空依赖项数组仅在初始组件装载后调用。执行
useffect
时,上下文中的
invoice
数据很可能未填充

要解决此问题,必须将
invoice
作为依赖项传递给
useffect
钩子,以便在函数值更改时执行该函数

useEffect(() => {
    if (invoice && invoice['data']) {
      setMoney();
    }
  }, [invoice]);

我们无法查看您是如何发送请求的。请考虑添加更多细节添加更多细节!