簡體   English   中英

錯誤:重新渲染過多。 React 限制渲染次數以防止無限循環。 反應

[英]Error: Too many re-renders. React limits the number of renders to prevent an infinite loop. React

從 Firebase 獲取數據並將其設置為useEffect Hook 內的狀態時,我useEffectuseEffect

這是我使用簡化標記的代碼:

function PostComponent({ id }){
  const [post,setPost] = useState({});
  const [error,setError] = useState("");

  const db = firebase.firestore();

  useEffect(()=>{
    db.collection('posts').doc(id).get().then(doc=>{
      setPost(doc.data());
    }).catch(err=>setError(err.message));
  }, []);

  return (
    {error && <h1>{ error }</h1>}
    <PostCard data={post} />
  );
}

更新!!

  • 我修復了錯誤因為我意識到這是在子組件中設置狀態的問題。感謝所有投入時間幫助我的人。

你能試試這樣嗎:


//this can be outsite of your component
const db = firebase.firestore();

function PostComponent({ id }){
  const [post,setPost] = useState({});
  const [error,setError] = useState("");

  useEffect(()=>{
    db.collection('posts').doc(id).get().then(doc=>{
      setPost(doc.data());
    }).catch(err=>setError(err.message));
  }, [id]);

  return (
    {error && <h1>{ error }</h1>}
    <PostCard data={post} />
  );
}

如果這不起作用,則錯誤可能來自另一個組件。

暫無
暫無

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

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