在下面的代码中,Sample
使用一个async
函数来获取一些数据。我将使用这些数据来更新 Redux 存储,以便任何组件都可以username
在应用程序中访问它们。
const resource = fetchData();
function Sample() {
// throws a promise when retrieving data
const name = resource.read();
const dispatch = useDispatch();
dispatch(setUsername(name));
const username = useSelector((state) => state.username);
return <div>User: {username}</div>;
}
<Suspense fallback="loading....">
<Sample />
</Suspense>
在这里,让我们假设没有用户名我的应用程序无法继续。好吧,<Suspense>
在父级别实现这一点,直到从资源中获取数据。但是,从 Redux 事件调度到<Sample>
组件重新渲染之间存在细微差距,其中显示User:
而不是loading....
(事件不强制立即重新渲染,因此username
为空)。所以我会以相同的顺序在网页中看到以下内容
loading....
--> User:
-->User: Srinesh
所以我的要求是在loading....
商店更新之前显示。在网页上,我期待看到,
loading....
-->User: Srinesh
有没有办法在不使用<Sample>
组件级别的另一个条件来显示loading....
用户名是否为的情况下实现这一点null
?