React Router打字稿属性'redirectUrl'在类型'{}'上不存在

时间:2020-09-21 15:42:36

标签: reactjs typescript react-router react-router-dom

我想通过历史记录发送状态。将与分页相关的一部分网址推送到登录页面。 但是我不知道如何在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;
}

1 个答案:

答案 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 }
}

Playground