【发布时间】:2021-03-15 08:22:12
【问题描述】:
我是新手,最近我遇到了这个问题,我不知道如何解决它。 它说重新渲染太多。 React 限制了渲染的数量以防止无限循环。它是如何无限循环的?是因为 on("value") 吗?
import React from "react";
import fire from "./firebase";
import firebase from "firebase"
import { useState } from "react"
const UserPage = ({ match }) => {
const [user, setUser] = useState(null)
const { params: { userId } } = match;
var userName;
console.log(userId)
firebase.database().ref("users/"+userId+"/praivate/login credentials").on("value", (snapshot)=>{
setUser(snapshot.val().userName)
})
return(
<>
<h1>Hey {user}</h1>
</>
)
}
export default UserPage
【问题讨论】:
-
每次
setUser,组件都会重新渲染...导致firebase调用再次发生...导致setUser被调用。使用useEffect(()=>doFirebaseCall(), [])结束您的 firebase 通话。
标签: javascript reactjs firebase firebase-realtime-database firebase-authentication