2017-01-17 6 views
1

Я создаю изоморфное приложение с React, которое должно поддерживать пользователей без JS.Что происходит с состоянием в React isomorphic App

Я новичок в этой технологии, и у меня есть основные сомнения: Сервер может хранить состояния компонентов, чтобы имитировать то, что React делает на стороне клиента?

Я представляю себе этот поток, когда пользователь не имеют JS:

  1. пользователь нажимает на кнопку и отправить запрос на сервер.
  2. Сервер восстанавливает состояние приложения и вносит изменения в него.
  3. Компоненты прослушивают эти изменения и визуализируются снова.

Верно ли это?

+0

В сущности, React в вашем случае будет работать только на сервере для создания статических HTML-страниц, что сопоставимо с отображением HTML с, скажем, PHP: сервер ставит страницу вместе, затем швыряет ее в сторону клиента, запускает и забыть.Вы будете перемещаться между статическими страницами, используя элементы ''. Какое «реальное» изоморфное приложение «Реагировать» - это то, что они предварительно создают статическую страницу только один раз, а затем вводят в предварительно обработанную разметку для последующего динамического поведения на стороне клиента. Вы правы, что вы можете сохранять состояние приложения между вызовами, но для этого требуется какое-то управление сеансом. –

ответ

0

Предполагая, что вы используете реагировать-маршрутизатор:

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

Например, если у вас есть приложение, в котором вы хотите отобразить список пользователей, скажите на URL-адресе/users, когда вы отправите свой первый запрос, сервер будет хранить пользователей в состоянии реакции ,

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

Однако, если вы обновите свою страницу, процесс запустится снова: первая загрузка, инициализирующая состояние, а затем навигация на стороне клиента.

EDIT: Разъяснения =>

Если вы хотите использовать реагировать на сервере, это означает, что вы используете сервер Nodejs. Дело в том, что response-dom предоставляет метод, называемый renderToString, который преобразует компонент jsx-ответа в стандартный HTML.

Это стремится загрузить первый вызов быстрее

Почему?

Когда вы загружаете на клиентское приложение «большое» JS, у вас есть время задержки, время, в которое ваш браузер должен загрузить ваш пакет JS.

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


Ни в коем случае нельзя использовать реакцию, даже если вы используете рендеринг на стороне сервера. Почему?. Поскольку ваши события на кнопках или асинхронная загрузка на клиенте или нажатие клавиш на языке JS.

+0

Спасибо за ответ! Но что, если у клиента нет JS? –

+0

Вы не можете использовать реакцию без javascript – mfrachet

+0

@Margin На самом деле, я понимаю, что вы можете отображать HTML-страницы на стороне сервера, так же, как вы использовали, скажем, PHP. Разве это не так? –