我想通过历史记录发送状态。将与分页相关的一部分网址推送到登录页面。 但是我不知道如何在Login中键入它,因此打字稿将了解状态到底包含什么。
我收到的错误:
Property 'redirectUrl' does not exist on type '{}'
if (!isAuthorized) {
history.push({ pathname: AppRoute.login, state: { redirectUrl: 'page=2' } });
return;
}
登录页面
const history = useHistory();
const redirectState = history?.location?.state;
if (isAuthorized) {
history.push({ pathname: AppRoute.home, search: redirectState?.redirectUrl })
return;
}
答案 0 :(得分:1)
由于未正确调用history.push()
,因此收到该错误。它接受路径和状态,作为两个单独的参数:
history.push(AppRoute.login, { redirectUrl: 'page=2' });
然后在另一端,您可以通过将其传递给您期望的状态类型来键入useLocation
调用。
function LoginPage() {
const location = useLocation<{ redirectUrl: string }>()
console.log(location.state.redirectUrl) // typed as: { redirectUrl: string }
}