Похоже, что выборка выполняется на клиенте в React - PullRequest
0 голосов
/ 06 марта 2020

Я создаю веб-приложение в React и выполняю запрос на выборку в componentDidMount, например:

fetch('http://localhost:8080')
            .then(currencies => currencies.json())
            .then(currencies => this.setState({
                currencies, loading: false
            }))
            .catch(err => console.log(err));

Это работает на моем компьютере. Я хочу развернуть приложение в Kubernetes, и поэтому я заменяю localhost на имя службы, например, http://history:8080.

Когда я развертываю это, кажется, что после GET на веб-интерфейсе веб-интерфейс загружается в мой браузер, а затем пытается получить history:8080 с моего личного ноутбука.

Это правда, или я неправильно понимаю свои ошибки?

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

Ответы [ 2 ]

0 голосов
/ 06 марта 2020

Прочтите этот раздел на reactjs веб-сайте https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html#fetching -external-data

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

0 голосов
/ 06 марта 2020

Вы используете реагирующий роутер? Иногда между клиентскими маршрутами и серверными маршрутами есть кла sh, если они совпадают по URL / конечной точке, и тогда решение состоит в том, чтобы добавить «/ api» et c .. перед внутренними маршрутами, и вот как они выиграли не кла sh.

...