![](/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.