我正在嘗試映射一個 id 陣列并從 React 中的外部 API 獲取該 id 的相關資料。這是我的代碼:
const getDetails = async () => {
ids.map(async(id) => {
const details = await axios.get(`url/${id}`);
setIdDetails(details);
});
};
getDetails();
并嘗試在這樣的下拉選單中顯示這些詳細資訊:
{idDetails.map((detail) => {
<MenuItem value={detail}>{detail.data.title}</MenuItem>
})}
我得到 idDetails.map 不是函式的錯誤。另外,我嘗試推送到陣列而不是設定狀態,也沒有運氣。我有這種感覺,我做錯了整個資料獲取的事情。處理這種情況的最佳做法是什么?
uj5u.com熱心網友回復:
正如@SurjeetBhadauriya 所提到的,使用擴展語法setIdDetails([...idDetails, details]);。
這將在將緩沖區作為單個專案傳播后推送緩沖區,這將允許您在 jsx 中映射它們。
uj5u.com熱心網友回復:
只需使用setIdDetails([...idDetails, details]);將新資料推送到陣列中。
const [idDetails, setIdDetails] = useState([]);
const getDetails = async () => {
ids.map(async(id) => {
const details = await axios.get(`url/${id}`);
setIdDetails([...idDetails, details]);
});
};
getDetails();
此外,進行此更改以避免特定于資料的錯誤
{(idDetails || []).map((detail) => {
<MenuItem value={detail}>{detail?.data?.title}</MenuItem>
})}
注意:我希望你在details這里得到一個物件const details = await axios.get(url/${id});
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/407925.html
標籤:
上一篇:PHPMailer在$mail=newPHPMailer之后不執行代碼
下一篇:無法創建物體框架代碼優先遷移
