【发布时间】:2021-04-26 22:18:24
【问题描述】:
当我在我的 React 应用程序的页面之间导航时,每个页面都会出现反弹(这意味着该页面首先呈现没有任何数据 [例如用户名、出生日期、图像],然后几毫秒/秒后出现一些细节在 API 请求完成并更新状态时显示在屏幕上。
例如我有以下页面:
<div className="home" onClick={() => history.push('/')}></div>
<div className="user" onClick={() => history.push('/user')}></div>
<div className="settings" onClick={() => history.push('/settings')}></div>
这导致当我单击“设置”按钮时,我首先转到/settings 路由,然后组件在发出 API 请求时开始重新渲染和弹跳。在每个页面中,我都会发出一个或多个 API 请求来获取数据。我使用useEffect 钩子提出这些请求。例如:
const Settings = () => {
const [userDetails, setUserDetails] = useState(null);
const [userImages, setUserImages] = useState([]);
useEffect(() => {
const getUserDetails = async () => {
const response = await getUserSettingsDetails();
setUserDetails(response.data);
}
const getUserImages = async = () => {
const response = await getUserSettingsImages();
setUserImages(response.data);
}
getUserDetails();
getUserImages();
}, []);
return (
...
);
}
我想要达到的目标:
例如,当我在“主页”上并单击以转到“设置”时,我希望仅在 API 请求完成后导航和呈现设置页面,并且我可以立即在屏幕上显示所有详细信息。我有一个不错的行加载组件,我想在加载时显示在标题中。 (与 YouTube 类似,它在导航时会显示一个红色进度条)。我也在这个项目中使用 Redux,我认为它可以在这里使用,但我不明白如何做到这一点。谁能解释一下如何实现这种行为。
【问题讨论】:
标签: javascript reactjs redux navigation