【发布时间】:2021-10-05 06:11:39
【问题描述】:
我在从 Firebase 获取数据并将其设置为 useEffect Hook 中的状态时遇到了下面提到的错误。
这是我使用简化标记的代码:
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} />
);
}
更新!!
- 我修复了错误,因为我意识到这是在子组件中设置状态的问题。感谢所有投入时间帮助我的人。
【问题讨论】:
-
您确定这是导致错误的组件吗?
-
在您的
useEffect()中,您没有列出实际的依赖项 (useEffect(() => { ... }, [id, setPost, setError])) -
没有理由在
useEffect之外定义db。现在的代码方式,firebase.firestore()在每次渲染时执行。 -
我已经尝试了此线程上列出的所有解决方案但它不起作用。我通过注释掉
setPost(doc.data())尝试了代码然后它可以工作但现在我无法加载帖子。因为我说过这是简化的jsx我将帖子作为道具传递给多个组件。 -
感谢您的时间和帮助,我通过更改子组件中的几行代码来修复错误
标签: javascript reactjs firebase react-hooks use-effect