Reactjs 使用react router更改页面时不呈现数据
我正在使用Reactjs 使用react router更改页面时不呈现数据,reactjs,react-router,Reactjs,React Router,我正在使用React Router中的Link组件在Play.tsx上更改页面。我使用useffect从Firestore获取数据,如果数组长度大于1,则使用map函数在页面上呈现数据。它工作正常,直到我更改页面并返回到渲染play.tsx的/play,其中没有任何数据,firestore中的数据正常,但页面上没有渲染任何内容 如果我使用正常的标记而不是链接,则可以正常工作 Play.tsx const[users,setUsers]=useState([]); //代码。。。 useffect
React Router
中的Link
组件在Play.tsx
上更改页面。我使用useffect
从Firestore
获取数据,如果数组长度大于1,则使用map
函数在页面上呈现数据。它工作正常,直到我更改页面并返回到渲染play.tsx的/play
,其中没有任何数据,firestore中的数据正常,但页面上没有渲染任何内容
如果我使用正常的标记而不是链接
,则可以正常工作
Play.tsx
const[users,setUsers]=useState([]);
//代码。。。
useffect(()=>{
db.collection(“users”).orderBy(“points”、“desc”).limit(10.get()。然后((数据:any)=>{
data.forEach((usr:any)=>{
push(usr.data());
console.log(用户)
})
}).catch((错误)=>{
console.log(“发生错误:”,err.message)
})
}, [])
返回(
{
users.length>=1?
users.map((d:any)=>{
返回(
{d.username}{d.pro?:null}
{d.points}点,{d.rank}({d.races}测试)
)
})
:
}
)
OtherComponent.tsx
主页
我的路线:Play.tsx(已渲染数据)->OtherComponent.tsx->Play.tsx(未渲染数据)
注意:问题不在数据本身,因为我可以控制台。记录它,问题在DOM,就像users
上的map函数没有调用一样
注2:我有一个条件,如果数组中有多个用户,它将映射,如果没有,它将显示一个微调器,但当我返回到Play.tsx
时,这些都不会被渲染,并且不会出现任何错误。在useEffect钩子中,通过执行users.push(usr.data())
应该使用useState钩子中的setUsers函数
useEffect(() => {
db.collection("users").orderBy("points", "desc").limit(10).get().then((data: any) => {
data.forEach((usr: any) => {
setUsers((prevState)=> ([...prevState, usr.data()]));
console.log(users)
})
}).catch((err) => {
console.log("An error has occured: ", err.message)
})
}, [])
尝试更改,看看状态是否正常运行哦,谢谢,伙计,我不认为使用push会导致该错误,如果你可以编辑并更改setUsers((prevState)=>([…prevState,usr.data()])
,以防万一有人有同样的问题。完成了,很高兴它成功了!
<Link to="/play"><li>Home</li></Link>
useEffect(() => {
db.collection("users").orderBy("points", "desc").limit(10).get().then((data: any) => {
data.forEach((usr: any) => {
setUsers((prevState)=> ([...prevState, usr.data()]));
console.log(users)
})
}).catch((err) => {
console.log("An error has occured: ", err.message)
})
}, [])