![](/img/trans.png)
[英]Error: Too many re-renders. React limits the number of renders to prevent an infinite loop. - React
[英]Error: Too many re-renders. React limits the number of renders to prevent an infinite loop. React
從 Firebase 獲取數據並將其設置為useEffect
Hook 內的狀態時,我useEffect
了useEffect
。
這是我使用簡化標記的代碼:
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.