簡體   English   中英

如何暫停渲染直到在反應中獲取數據

[英]How to pause render until the data is fetched in react

我是新手,遇到了這個問題。

 import React from "react"; import firebase from "firebase"; import fire from "./firebase" import { Route, BrowserRouter as Router, Switch, Redirect, useHistory, NavLink } from 'react-router-dom'; import Header from "./header" import Nav from "./nav" import data from "./data" function Home(){ let userID; let userName; let logg; const history = useHistory(); firebase.auth().onAuthStateChanged((user)=>{ if(user){ userID = user.uid }else{ history.push("/login") } }) return( <> <Header /> <Nav /> <div id = "home" className ="main"> <div class = "headingCont"> <h1>This is home</h1> <NavLink to = {"users/"+userID}><p>Your Profile</p></NavLink> </div> </div> </> ) } export default Home

我正在從 firebase 獲取用戶 ID,但它會快速呈現 jsx,因此 userID 的值仍未定義。 因此,當我單擊“您的個人資料”時,它轉到用戶/未定義而不是用戶/“用戶 ID”,我該如何解決?

您應該使用 state 作為userId而不是 scope 變量。

const [userID, setUserID] = useState(null)
firebase.auth().onAuthStateChanged((user) => {
  if (user) {
    setUserID(user.uid)
  } else {
    history.push('/login');
  }
});

暫無
暫無

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

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