Как обновить маршрут без повторного рендеринга страницы (открытие / закрытие модального маршрута, который имеет собственный маршрут)? - PullRequest
0 голосов
/ 14 сентября 2018

В моих маршрутах я настроил слаг для определенного маршрута, например:

Main route: /members
Sub route: /members/:slug

Теперь, когда я иду на www.website.com/members/some-slug

Я попытаюсь определить, есть ли слизень или нет:

if (this.props.match.params.slug) {
   // If have slug, open a modal window with data that corresponds to that slug
   this.showModal(this.props.match.params.slug);
}

То, что происходит, - то, что showModal изменит состояние Модального компонента на true (таким образом, покажет его), а также вызовет вызов API, чтобы получить детали, относящиеся к переданному параметру slug (например, slug sarah-smith используется для запрос GET в качестве параметра для получения данных Сары Смит).

Так что все это пока хорошо. Однако проблема заключается в повторном рендеринге страницы, когда я либо:

  1. Открыть модал
  2. Закрыть модал

У нас есть переходы для каждого элемента на странице, поэтому, если вы посещаете маршрут, элементы будут иметь тонкий переходный эффект.

Когда щелкают по модалу, я делаю (member.name - пуля):

<Link
    to={`/member/${member.name}`}
</Link>

Что вызывает изменение маршрута, поэтому вы можете видеть эти небольшие переходы на заднем плане, когда модальное изображение исчезает (как будто я открываю /member/slug в первый раз).

То же самое с модальной кнопкой закрытия, если я нажимаю на нее, то я вызываю:

closeModal() {
    this.props.history.push("/member");
}

Перерисовывает всю страницу /member, а не просто закрывает модал. Я не могу просто использовать this.setState({ showModal: false });, так как это не изменит маршрут обратно на /member.

Есть ли способ решить эту проблему? Или другой способ сделать так, чтобы страница не перерисовывалась при изменении URL?

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Я думаю, что у документов React-Router уже есть такие примеры.Вы можете проверить следующее

https://reacttraining.com/react-router/web/example/modal-gallery.

Также имеется npm модуль https://github.com/davidmfoley/react-router-modal

0 голосов
/ 14 сентября 2018

Вы можете обернуть ваш модал в маршрут следующим образом.

модальный

Тогда this.props.history.push ("/ path");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...