Поверхностная маршрутизация — это функция, предоставляемая React Router, которая позволяет вам изменить URL-адрес страницы без фактического перехода на новую страницу. Это означает, что компонент страницы не перезагружается, а любое состояние или параметры, которые были установлены ранее, сохраняются.

Поверхностная маршрутизация достигается с помощью объекта history, который предоставляется React Router. Объект history имеет метод push, который можно использовать для изменения URL-адреса текущей страницы без ее перезагрузки. По умолчанию метод push выполняет полную перезагрузку страницы, но вы можете включить неглубокую маршрутизацию, передав объект state со свойством shallow, для которого установлено значение true.

Вот пример использования мелкой маршрутизации в React:

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

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

  function handleClick() {
    history.push('/my-page', { shallow: true });
  }

  return (
    <button onClick={handleClick}>Go to My Page</button>
  );
}

Неглубокая маршрутизация в React Router для изменения URL-адреса страницы без ее перезагрузки.

Чтобы использовать неглубокую маршрутизацию в React Router, вы можете использовать объект history, предоставляемый хуком useHistory, для добавления нового URL-адреса в стек истории без фактического перехода на новую страницу. Это означает, что компонент страницы не перезагружается, а любое состояние или параметры, которые были установлены ранее, сохраняются.

Вот пример использования мелкой маршрутизации в React Router:

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

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

  function handleClick() {
    history.push('/my-page', { shallow: true });
  }

  return (
    <button onClick={handleClick}>Go to My Page</button>
  );
}

В этом примере компонент MyComponent использует хук useHistory для получения доступа к объекту history. Функция handleClick вызывается при нажатии кнопки и использует метод push объекта history для изменения URL-адреса текущей страницы на /my-page с использованием неглубокой маршрутизации.

Обратите внимание, что неглубокая маршрутизация работает только для изменений URL той же страницы. Если вы хотите перейти на другую страницу, вам потребуется выполнить полную перезагрузку страницы.

Разница между поверхностной маршрутизацией и обычной маршрутизацией в React Router

Основное различие между неглубокой маршрутизацией и обычной маршрутизацией в React Router заключается в том, что неглубокая маршрутизация позволяет вам изменить URL-адрес страницы без фактического перехода на новую страницу, в то время как обычная маршрутизация выполняет полную перезагрузку страницы при изменении URL-адреса.

При обычной маршрутизации при изменении URL-адреса вся страница перезагружается и отображается новый компонент страницы. Это может быть медленным и неэффективным, особенно если новый компонент страницы похож на предыдущий и нужно обновить лишь небольшую часть страницы.

При неглубокой маршрутизации при изменении URL-адреса компонент страницы не перезагружается, а любое состояние или свойства, которые были установлены ранее, сохраняются. Это означает, что повторно отображается только часть страницы, которую необходимо обновить, что может быть намного быстрее и эффективнее.

Поверхностная маршрутизация полезна, когда вы хотите изменить URL-адрес страницы без фактического перехода на новую страницу, например, когда вы хотите обновить URL-адрес, чтобы отразить изменение состояния страницы или поддержать навигацию по истории браузера. Обычная маршрутизация полезна, когда вы хотите перейти на совершенно новую страницу, например, когда вы нажимаете ссылку или вводите новый URL-адрес в адресной строке.

В React Router вы можете использовать объект history для выполнения как мелкой, так и обычной маршрутизации. Метод push объекта history по умолчанию выполняет обычную маршрутизацию, но вы можете включить поверхностную маршрутизацию, передав объект state со свойством shallow, для которого установлено значение true.

React Router для выполнения обычной маршрутизации

Чтобы использовать React Router для выполнения обычной маршрутизации, вы можете использовать объект history, предоставляемый хуком useHistory, чтобы поместить новый URL-адрес в стек истории и перейти на новую страницу. Это приведет к перезагрузке всей страницы и отображению нового компонента страницы.

Вот пример того, как использовать React Router для выполнения обычной маршрутизации:

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

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

  function handleClick() {
    history.push('/my-page');
  }

  return (
    <button onClick={handleClick}>Go to My Page</button>
  );
}

В этом примере компонент MyComponent использует хук useHistory для получения доступа к объекту history. Функция handleClick вызывается при нажатии кнопки и использует метод push объекта history для изменения URL-адреса текущей страницы на /my-page и перехода на новую страницу.

Обратите внимание, что обычная маршрутизация приводит к перезагрузке всей страницы и отображению нового компонента страницы, что может быть медленным и неэффективным. Если вам нужно обновить только часть страницы, вы можете вместо этого использовать неглубокую маршрутизацию.