簡體   English   中英

React useEffect 是如何工作的?

[英]React useEffect how it works?

我正在為數據庫使用 firebase 雲。 此 useEffect 讀取集合中的每個文檔(“電子郵件”)

據我所知,useEffect 將在每次組件加載或
當某些數據發生變化時,如果我們將其設置為 [ ] ( useEffect() => {}, []);

但我的問題是,當我發送郵件(更新“電子郵件”)時,我的組件如何知道“重新呈現整個列表”。 當我在 last [] 中什么都沒有時

如果有人可以檢查上一篇文章,我的項目 gmail 克隆也有問題。

React.js + REDUX...我不知道,當我從加星標的部分刪除星號時,它會給我“電子郵件”(所有收件箱)而不是“加星標的電子郵件”

useEffect(() => {
        const readData = () => {
            db.collection("emails") // uzimi emails kolekciju
                .orderBy("timestamp", "desc") // rapsoredi ih po timestampu
                .onSnapshot((
                    snapshot // uzmi snapshot trenutni
                ) =>
                    setEmails(
                        // stavi mail da bude ovo
                        snapshot.docs.map((doc) => ({
                            id: doc.id, // id = doc.id nDqpnWjBpy....
                            data: doc.data(), // ovo je zapravo message,subject,to itd..
                        }))
                    )
                );
        };
}, []);

您剛剛在componentDidMount掛鈎中定義了readData function,您可能會在組件中更遠的地方使用它。 請記住,定義與調用不同。 還要記住 React 會在任何值(prop/state)發生變化時重新渲染組件。

因此,避免您所說的方法是有條件地實施setErrors ,如下所示:

setEmails(prevState => {
    if (prevState === []) {  // updating only initially, pass your initial emails' value here
       return snapshot.docs.map((doc) => ({
            id: doc.id,
            data: doc.data()
        }));
    } else return prevState;
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM