在下面的代码中,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?