Стандартный способ сделать это - использовать параметр запроса для захвата предполагаемого места назначения вашего пользователя до того, как вы перенаправили его на страницу входа в систему, чтобы вы могли затем отправить их в назначенное место назначения после того, как они вошли в систему.
Если вы используете react-router
, вы можете получить текущее местоположение от объекта history
, который можно получить с помощью Hook или HO * 1032. *. Если вы используете другую библиотеку маршрутизации, она, вероятно, будет иметь документацию для получения history
.
Обычно это делается с <Redirect to={signUpPath}/>
, но вы можете применить эту же концепцию к <Link ...>
также.
Возьмите желаемое место от объекта history
или window
и создайте ссылку, чтобы она выглядела примерно так:
const redirectPath = ...; //capture/build the path of where to return the user to
<Link to={"/signup?redirectTo={redirectPath}"}>Sign up</Link>
На странице регистрации, Затем вы должны получить параметр запроса redirectTo
из текущего URL (через history.location.search
, если вы используете react-router
):
//getReturnUrl would just pull the url from the search string. you could also use window.location
const destination = getReturnUrl(history.location.search);
history.replace(destination);
, а затем отправить туда пользователя после того, как он вошел в систему. , Если пути перенаправления нет, то они, вероятно, не были получены из вашего приложения, поэтому просто отправьте их в представление по умолчанию.
Примечание: использование history.replace()
вместо более распространенного history.push()
сохраняет регистрацию отображение страницы в заднем стеке пользователя.