#javascript #reactjs #react-router
Вопрос:
это тип кнопки «Назад», которая используется для перехода на предыдущие страницы, а не с помощью панели навигации, но теперь я хочу отключить ее, когда следующий предыдущий встроенный маршрут будет «вход».
Я читал другие вопросы на этой платформе и пробовал это, но, похоже, это не правильная логика
const handleGoBack = () => {
if (authStatus) {
window.history.pushState(null, null, location.href);
window.onpopstate = function (event) {
window.history.go(1);
};
return window.history.back()
};
};
Я сомневаюсь, что такая вещь существует, но я хочу что-то в этом роде
const handleGoBack = ( e, authStatus ) => {
if(previouseRouter === 'login')
return authStatus amp;amp; event.currentTarget.disabled === true
}
есть ли лучший способ решить проблему.., а также я использую Hashrouter
Ответ №1:
Вместо того , чтобы проверять, был ли предыдущий маршрутизатор Login
, вы могли перейти от входа на следующую страницу с помощью history.replace("path/to/next/page")
. Таким образом, вы заменяете историю последней навигации, и возврат не попадает на страницу входа в систему.
Комментарии:
1. Я получаю эту ошибку
Warning: Cannot update a component (
При) while rendering a different component (
входе в систему). To locate the bad setState() call inside
, follow the stack trace as described in https://reactjs.org/link/setstate-in-render
2. @Chirume Да, я понимаю вашу проблему, но без кода действительно трудно сказать, в чем проблема. Не могли бы вы опубликовать некоторые
Login
иDispenseware
компоненты кода?3. мой код слишком сложен, но я понимаю концепцию, лежащую в его основе, хотя большое спасибо. если я не ошибаюсь, это то же самое, что показано здесь
4. Мне удалось устранить ошибку обновления компонента во время рендеринга, передав сообщение в
history.replace('path/to/next/page')
качестве обратного вызоваauthenticate(loginDetails, () => history.replace('/'));