繁体   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