Позволяет некоторым маршрутам обрабатываться Groovy, а другим - response-router v4. - PullRequest
0 голосов
/ 17 сентября 2018

Код, с которым я работаю, имеет в контроллере Groovy код, который отображает GSP (страницы сервера Groovy).А для внешнего интерфейса мы используем response-router v4 для обработки маршрутов.Проблема, с которой я сталкиваюсь, заключается в том, что, определяя маршрут в реакции-маршрутизаторе, он не позволяет браузеру извлекать что-либо из серверной части и просто не отображает компонент (поскольку шаблон определен в серверной части для этого маршрута.и не во внешнем интерфейсе).

Например:

<button onClick={() => this.props.history.push('/somethingThatShouldBeRenderedByTheFrontend')}>Render from the frontend</button>
<button onClick={() => this.props.history.push('/somethingThatShouldBeRenderedByTheBackend')}>Render from the backend</button>

И когда нажата кнопка «Render from the frontend», это должно отобразить «FrontendReactComponent», но когда «Render from backend»"нажата, это должно позволить ударить контроллер Groovy под названием" XYZ ", который, в свою очередь, отображает страницу GSP.Я не мог найти подходящую терминологию для исследования этой проблемы в Интернете.Кто-нибудь знает, что я могу найти, или как я могу решить эту проблему?

РЕДАКТИРОВАТЬ: Более подробную информацию об этой проблеме можно найти здесь (вместе с решением): React-routerURL не работают при обновлении или записи вручную

1 Ответ

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

Нет простого решения для того, что вы пытаетесь сделать. Как вы уже знаете, маршрутизатор React может иметь дело только с состоянием загруженного интерфейсного приложения (т. Е. С состоянием браузера, загруженных сценариев и т. Д.)

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

Также рассмотрите, как эти URL будут работать как закладки - вы должны быть уверены, какие URL-адреса должен обрабатывать сервер, а какие просто загрузить клиентское приложение и затем перейти к запрошенному компоненту.

Вместо этого я бы сделал что-то другое: если вам - для некоторых страниц - нужно визуализировать много HTML-кода на стороне сервера, создайте для этого контроллер, но без верхних и нижних колонтитулов: по сути, создайте «внутреннее зеркало» Реагировать на компонент, который будет извлекать нужный HTML-код с сервера и отображать его в (используя свойство innerHtml).

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