@lexstile

Как проверить history в react-router-dom (v5) на пустоту?

Например, в коде я использую goBack, чтобы вернуться на предыдущую страницу:
const history = useHistory();
history.goBack();

Но если пользователь зайдет по прямому URL, еще нет истории переходов, которую мы создаем через history.push(). В этом случае хочется иметь запасной вариант (Сейчас, как я понял, роутер наш шлет на главную).

То есть, как проверить, что в истории переходов нет? (пользователь зашел по прямому URL)
  • Вопрос задан
  • 293 просмотра
Решения вопроса 1
TMProject
@TMProject
Frontend developer React/Redux
Для проверки, есть ли записи в history, можно использовать свойство length. Если значение length равно 1, то это означает, что в history нет предыдущей страницы, и пользователь зашел по прямому URL.

Вот как можно проверить history на пустоту:

import { useHistory } from 'react-router-dom';

function MyComponent() {
  const history = useHistory();

  function goBack() {
    if (history.length > 1) {
      history.goBack();
    } else {
      // обработка случая, когда history пуста
      // например, переход на главную страницу
      history.push('/');
    }
  }

  return (
    <div>
      <button onClick={goBack}>Назад</button>
    </div>
  );
}


Этот код проверяет length свойство history, и если оно больше 1, то вызывает goBack(), чтобы вернуться на предыдущую страницу. Если length равно 1, то пользователь зашел по прямому URL, и код выполняет альтернативное действие (в данном случае, переход на главную страницу)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы