0

Я создал рендеринг на стороне сервера с подходом, описанным в файле redux official site, все отлично, но с клиентской стороны он снова отображает компоненты, и это нехорошо, я думаю. Я передаю одно и то же состояние с сервера на window.__STATE__ переменной и передаю это на мою клиентскую сторону createStore метод в качестве исходного состояния, но он снова повторится. Также, пожалуйста, напишите в комментариях, какая часть кода вам нужна, если да. Я не предоставляю, так как он очень похож на официальный код инструкций страницы, и нет ошибок, просто выдайте с помощью рендеринга, но, как я понимаю, это не соединение с виртуальным DOM.Реагировать на сервер сервера Redux снова рендеринга на клиенте

Пожалуйста, помогите мне найти правильный путь для решения этой задачи.

ответ

0

Взгляните на этот пример из проекта ReactGo: https://github.com/reactGo/reactGo/blob/master/app/client.jsx#L22

Они используют функцию onUpdate, которая имеет условное

if (window.__INITIAL_STATE__ !== null) { 
    window.__INITIAL_STATE__ = null; 
    return; 
    } 

который предотвращает дубликатом выборку, если __INITIAL_STATE__ уже определен. Реорганизация ваших компонентов может иметь какое-то отношение к дублированию выборки.

0

Возможно, я не понимаю, что вы подразумеваете под повторным рендерингом, но он должен снова «повторно отобразить» на клиенте. Способ изоморфной работы заключается в том, что он отображает HTML на сервере, а затем полезная нагрузка включает в себя начальное состояние, а также разметку HTML - таким образом, браузер «появляется», чтобы иметь более быстрое время загрузки страницы, поскольку пользовательский интерфейс отображается даже раньше сценарий выполняется. Теперь, когда HTML обрабатывается и выполняется сценарий, React внутренне создает виртуальную DOM, а затем сравнивает его с сервером, созданным DOM, и подключает прослушиватели событий и т. Д. Однако он не выполняет полную повторную визуализацию, поскольку никакие новые элементы DOM не должны быть создан. Если по какой-либо причине клиент запускает рендеринг React в виртуальном DOM, который отличается от созданного DOM сервера, React даст вам предупреждение.

«Предупреждение. React попытку повторного использования разметки в контейнере, но контрольной сумма недопустимое Это обычно означает, что вы используете сервер рендеринг и разметку, сгенерированную на сервере были не то, что клиент ожидал. Реагировать впрыскивается новую разметку для компенсации которых работает, но вы потеряли много преимуществ рендеринга сервера Вместо этого выяснить, почему разметка генерируется отличается от клиента или сервера:.»

+0

Привет, с повторной -версия, я имею в виду, что она не проверяет VirtualDOM для различения, но рендеринг снова цельной страницы. Кроме того, реакция не дает мне предупреждения, я проверю, может быть, мой корневой компонент связан с 'redux', и поэтому он перерисовывает всю страницу. –