簡體   English   中英

如何僅在設置 state 后渲染反應組件?

[英]How do I render a react component only after a state is set?

我的應用程序使用useEffect從服務器獲取一些數據並將其作為道具傳遞給子組件。 我想暫停子組件的渲染,直到數據完全獲取並加載到state中。 我怎樣才能做到這一點?

我的代碼(簡化):

const App = () => {
  const [data, setData] = useState(undefined)
  
  useEffect(async () => {
    const fetchedData = await getDataFromServer()
    setData(fetchedData)
  }, [])

  return (
    <div>
      <ChildComponent data={data} /> // How to pause rendering until data != undefined?
    </div>
  )
}

您可以通過使用三元運算符來實現這一點,因為undefined是一個虛假值,所以條件將返回false並且它會顯示Loading...直到獲取data並且在完成獲取后,條件將變為true ,因為data不再undefined ie falsy這就是只有在獲取data后才會將數據傳遞給子組件的方式。

const App = () => {
  const [data, setData] = useState(undefined)
  
  useEffect(async () => {
    const fetchedData = await getDataFromServer()
    setData(fetchedData)
  }, [])

  return (
    <div>
      {data ? <ChildComponent data={data} /> : <p>Loading...</p>}
    </div>
  )
}

更多關於falsy的信息

更多關於 Javascript 中的ternary operator這里

暫無
暫無

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

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