Итак, у меня есть приложение 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]);