0

我有反应组件,我在其中调用 API 并获取数据收集。我已经定义了一个接口,我想将来自 API 的传入数据映射到在反应中定义但未定义的接口。我知道一种选择是使用 map 但我正在尝试将值分配给变量

result = [
   {id=1, name="kz", address="London", transactions: [{ id=1, amount=21}] },
   {id=1, name="abc", address="Manchester", transactions: [{ id=1, amount=21}] },
   {id=1, name="xyz", address="Edinburgh", transactions: [{ id=1, amount=21}] }
]

界面

export interface IMyData{
id :number,
name : string
address: string,
  transactions :[
      id: number,
      amount: number
  ]
} 

调用 API 并分配数据对象

  const [eziData, setEziData] = useState<IMyData>();

  const result = await ....//getting api data

  setEziData(result);

当我 console.log 时获取 eziData 未定义

4

1 回答 1

1

setEziData是异步方法,因此您无法eziData立即获取 after的更新值setEziData

setEziData(result);
console.log(eziData); // This will show the old `eziData ` value.

eziData您应该通过添加依赖项在 useEffect 中获得更新的结果。

useEffect(() => {
  console.log(eziData);
}, [eziData]);

状态类型也是错误的。

  const [eziData, setEziData] = useState<IMyData[]>();
于 2020-12-20T10:18:01.367 回答