![](/img/trans.png)
[英]How do i pass the properties of an object whose state is set in one component through a link and render them in another component in React
[英]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.