1 回答

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊
你可以使用 Redux 的生命周期方法來(lái)處理這個(gè)問(wèn)題。假設(shè)您的電子郵件詳細(xì)信息組件的狀態(tài)如下所示:
export const initialState: StateShape = {
loading: false,
readOnlyEmailData: {
recipientEmails: null,
senderEmail: null,
body: null,
},
};
當(dāng)電子郵件詳細(xì)信息組件(我們稱之為 EmailDetail.jsx)正在加載時(shí),您可以使用 ComponentDidMount() 來(lái)獲取和設(shè)置您的值。
您可能會(huì)擁有像 getEmail、getEmailSuccess 和 getEmailError 這樣的操作和操作創(chuàng)建器。在 getEmail 中將 loading 設(shè)置為 true,然后在成功或錯(cuò)誤時(shí)再次設(shè)置為 false。您可以將條件渲染的微調(diào)器組件(很容易從 MaterialUI 之類的東西借用)添加到 EmailDetail,該組件僅在加載為 true 時(shí)可見(jiàn),并在加載為 false 時(shí)渲染其余內(nèi)容。
當(dāng)用戶點(diǎn)擊后退按鈕或以其他方式離開(kāi)組件時(shí),可以為 componentWillUnmount() 提供一個(gè)在組件準(zhǔn)備卸載時(shí)要做的事情的列表。在這種情況下,您可以使用重置方法將加載和 readOnlyEmailData 重置為卸載時(shí)的初始狀態(tài)。
當(dāng)用戶單擊新電子郵件時(shí),它將在掛載時(shí)加載新電子郵件數(shù)據(jù)并顯示微調(diào)器,直到新電子郵件數(shù)據(jù)可用。
還有其他方法可以做到這一點(diǎn),這不是最優(yōu)化的,但它應(yīng)該比你迄今為止嘗試過(guò)的更好。我希望它有幫助:)
添加回答
舉報(bào)