Почему ограничение связанной собственности не работает?

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

Когда вы используете компонент React Router Link, он блокирует навигацию браузера и вызывает переход. Чтобы сделать клиент- боковая навигация. Вы используете HistoryLocation, поэтому он использует API истории HTML5 для завершения иллюзии навигации, моделируя новый URL-адрес в адресной строке. Если вы используете старые браузеры, это не сработает. Вам нужно будет использовать компонент HashLocation.

Когда вы нажмете обновление, вы обойдете весь код React и React Router. Сервер получает запрос для /joblist, и он должен что-то вернуть. На сервере вам необходимо передать путь, запрошенный методу run, чтобы он отображал правильный вид. Вы можете использовать ту же карту маршрутов, но вам, вероятно, потребуется другой вызов Router.run. Как указывает Чарльз, вы можете использовать переписывание URL, чтобы справиться с этим. Другим вариантом является использование сервера node.js для обработки всех запросов и передачи значения пути в качестве аргумента местоположения.

В выражении, например, это может выглядеть так:

var app = express();

app.get('*', function (req, res) { // This wildcard method handles all requests

    Router.run(routes, req.path, function (Handler, state) {
        var element = React.createElement(Handler);
        var html = React.renderToString(element);
        res.render('main', { content: html });
    });
});

Обратите внимание, что путь запроса передается в run. Для этого вам понадобится серверный механизм просмотра, с помощью которого вы можете передать отображаемый HTML. Существует ряд других соображений, использующих renderToString и в запуске React на сервере. После того, как страница будет отображаться на сервере, когда ваше приложение загрузится в клиенте, оно снова отобразится, обновив HTML-код на стороне сервера, если необходимо.

0
задан Gaurav Kumar 16 January 2019 в 12:25
поделиться