Программно изменять / манипулировать историей браузера в реакции или ванили - PullRequest
0 голосов
/ 24 февраля 2020

Итак, у меня есть приложение SPA, и я хотел сделать историю браузера в основном бесплатной sh, когда пользователь входит в систему.

Скажем, у меня есть маршрут '/', в котором есть ссылка для входа и регистрации , затем, когда я go войду в '/ login' и попытаюсь войти в систему и успешно пройти аутентификацию, на странице монтируются аутентифицированные страницы. Теперь я хотел удалить «/» и «/ login» из истории, чтобы пользователь не смог go вернуться к «/» или «/ login», когда день нажимает кнопку «Назад» в браузере

Пока что у меня есть какое-то обнаружение, только когда пользователь пытается go открыть неаутентифицированные страницы (например, '/ login') во время аутентификации. Было бы удобно, если бы я мог программно удалить историю до монтирования аутентифицированной страницы, таким образом, первая монтированная страница является единственной историей в стеке, поэтому, когда они go возвращают пользователя, пользователь не сможет.

login.tsx:

const history = useHistory();
const login = useCallback(async(e: SubmitEvent) => {
  e.preventDefault();
  const result = await Service.login('route-that-handles-login');
  if (result.authenticated) {
    // this is where I intend to remove/manipulate the history before pushing to home.
    history.push('/home');
  }
}, [history]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...