1 回答

TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊
您的問題是如何使用 更新metadata
對(duì)象setMetadata
。metadata
在您的上下文中通過更新對(duì)象的操作loadMetadata
分別由兩個(gè)“實(shí)例”完成:TestComponent
#1 和TestComponent
#2。它們都可以訪問metadata
上下文中的對(duì)象,但它們不會(huì)立即同步,因?yàn)?code>useState的 setter 函數(shù)是異步工作的。
解決您的問題的簡(jiǎn)單方法稱為功能更新。?useState
的 setter 還提供了一個(gè)回調(diào)函數(shù),它將使用(我在這里過于簡(jiǎn)單化)“最新”狀態(tài)。
在您的上下文提供者中:
async function loadMetadata(url) {
? let response = await axios.get(url);
? setMetadata((existingData) => ({ ...existingData, [url]: response.data }));
? // instead of
? // setMetadata({ ...metadata, [url]: response.data });
}
添加回答
舉報(bào)