
Алексей
09.01.2017
21:13:41
хотя конечно на чистом реакте можно и данные и хендлеры пробрасывать в дочерние компоненты из компонента-стейта

Klim
09.01.2017
21:15:03

Алексей
09.01.2017
21:15:58

Google

Алексей
09.01.2017
21:16:43
при скорее всего не очень правильной архитектуре (а кто ж её с первых трёх раз правильно делает то?)
в общем если вы обнаруживаете, что у вас нет однотипных повторений кода, то всё более-менее в порядке

Sergey
09.01.2017
21:17:21

Andrey
09.01.2017
21:28:37
Существует ли простой способ из сервером отрендеренной разметки ПЛЮС компонентов_в_виде жс получить исходный стейт который мы использовали на сервере для рендеринга?
Чтобы не дублировать инитиал стейт который пришёл с сервера)

Nikita
09.01.2017
21:32:23
нет
так много данных?

Владимир
09.01.2017
22:11:13

Andrey
09.01.2017
22:11:56
Но Нет так нет

Владимир
09.01.2017
22:13:12
Объясни вопрос

Dmitrii
09.01.2017
22:13:16
смотря о каком стейте речь идет, стейт компонента или reudx

Vasiliy
09.01.2017
22:14:11
я так понял вопрос: как из представления получить состояние)
нужна ф-ция, обратная state -> view, а компоненты должны рендерить стейт по вью, им приходит jsx, а они должны в render возвращать props (я угараю просто, если что, не в серьез)

Google

Dmitrii
09.01.2017
22:14:35
да хрен проссышь, что он вообще имел ввиду)

Владимир
09.01.2017
22:14:36
Что является состоянием а что нет?

Ҫѐҏӗѫӑ
09.01.2017
22:14:55
полуночная философия

Владимир
09.01.2017
22:15:13
В любом случае все что рендерит сервер не из пальца высосано

Ҫѐҏӗѫӑ
09.01.2017
22:18:21
я тут начал писать wasm-loader. как же все сложно там пока что

Владимир
09.01.2017
22:19:51
Для бабеля?

Ҫѐҏӗѫӑ
09.01.2017
22:20:30
вебпака

Владимир
09.01.2017
22:23:52
Васм к жс? Или наоборот?

Ҫѐҏӗѫӑ
09.01.2017
22:24:49
чтобы юзать васм модули из жс

Arseniy
09.01.2017
22:44:19
https://github.com/rsms/wasm-loader а вот это видел?

Roman
09.01.2017
22:48:12


Vladimir
09.01.2017
22:50:59
да хрен проссышь, что он вообще имел ввиду)
Ну когда у нас react/redux приложение с серверным рендерингом, то у нас на клиент приезжает во первых верстка, которая отрендерилась на сервере, а во вторых стейт, который мы сформировали на сервере для рендера в виде чего-то вроде <script>window.__INITIAL_STATE__ = {someProp: 'banana'}</script>, который потом используется для инициализации стора на клиенте. Получается, данные дублируются в верстке и стейте. Человек хочет на клиенте из верстки и компонентов восстановить стейт, чтобы не дублировать данные. Но это сделать невозможно, в стейте могут быть какие-то данные, которые не используются для рендера текущей страницы, но тем не менее важны.
На самом деле, тут можно упороться. Мы же серверный рендеринг для людей делаем для визуальной скорости загрузки, пока грузится js, человек уже видит готовую страницу, отрендеренную на сервере. Но если js есть в кэше браузера - в серверном рендеринге нет смысла. Мы можем отдавать для статики заголовки для кэширования, скажем, на сутки, и ставить какую-нибудь куку на сутки. На сервере при обработке запроса, если кука есть - значит js в кэше браузера - не рендерим на сервере, не дублируем данные, не нагружаем лишний раз сервер. Куки нет - рендерим на сервере, ставим куку.
Для роботов, конечно, всегда рендерим


Ҫѐҏӗѫӑ
09.01.2017
22:53:29

Denis
09.01.2017
23:18:20
Теперь мы делаем не изоморфные, а квазиполиномиальные приложения :) http://people.cs.uchicago.edu/~laci/update.html

Oleg
09.01.2017
23:43:36
Наконец-то прогресс в этой области!


Roman
10.01.2017
00:15:26
Ну когда у нас react/redux приложение с серверным рендерингом, то у нас на клиент приезжает во первых верстка, которая отрендерилась на сервере, а во вторых стейт, который мы сформировали на сервере для рендера в виде чего-то вроде <script>window.__INITIAL_STATE__ = {someProp: 'banana'}</script>, который потом используется для инициализации стора на клиенте. Получается, данные дублируются в верстке и стейте. Человек хочет на клиенте из верстки и компонентов восстановить стейт, чтобы не дублировать данные. Но это сделать невозможно, в стейте могут быть какие-то данные, которые не используются для рендера текущей страницы, но тем не менее важны.
На самом деле, тут можно упороться. Мы же серверный рендеринг для людей делаем для визуальной скорости загрузки, пока грузится js, человек уже видит готовую страницу, отрендеренную на сервере. Но если js есть в кэше браузера - в серверном рендеринге нет смысла. Мы можем отдавать для статики заголовки для кэширования, скажем, на сутки, и ставить какую-нибудь куку на сутки. На сервере при обработке запроса, если кука есть - значит js в кэше браузера - не рендерим на сервере, не дублируем данные, не нагружаем лишний раз сервер. Куки нет - рендерим на сервере, ставим куку.
Для роботов, конечно, всегда рендерим
как у вас тут все запущено
как пропс к toUpperCase() присобачить?
<strong>{this.props.myprop}!</strong>


? ethorz
10.01.2017
05:07:51
<strong>{this.props.myprop.toUpperCase()}!</strong> так не работает?


Сергей
10.01.2017
05:28:08
Ну когда у нас react/redux приложение с серверным рендерингом, то у нас на клиент приезжает во первых верстка, которая отрендерилась на сервере, а во вторых стейт, который мы сформировали на сервере для рендера в виде чего-то вроде <script>window.__INITIAL_STATE__ = {someProp: 'banana'}</script>, который потом используется для инициализации стора на клиенте. Получается, данные дублируются в верстке и стейте. Человек хочет на клиенте из верстки и компонентов восстановить стейт, чтобы не дублировать данные. Но это сделать невозможно, в стейте могут быть какие-то данные, которые не используются для рендера текущей страницы, но тем не менее важны.
На самом деле, тут можно упороться. Мы же серверный рендеринг для людей делаем для визуальной скорости загрузки, пока грузится js, человек уже видит готовую страницу, отрендеренную на сервере. Но если js есть в кэше браузера - в серверном рендеринге нет смысла. Мы можем отдавать для статики заголовки для кэширования, скажем, на сутки, и ставить какую-нибудь куку на сутки. На сервере при обработке запроса, если кука есть - значит js в кэше браузера - не рендерим на сервере, не дублируем данные, не нагружаем лишний раз сервер. Куки нет - рендерим на сервере, ставим куку.
Для роботов, конечно, всегда рендерим
Зачем так усложнять. Да и серверный рендеринг нормально работает

Google

Сергей
10.01.2017
05:28:56


Andrey
10.01.2017
05:58:54
Ну когда у нас react/redux приложение с серверным рендерингом, то у нас на клиент приезжает во первых верстка, которая отрендерилась на сервере, а во вторых стейт, который мы сформировали на сервере для рендера в виде чего-то вроде <script>window.__INITIAL_STATE__ = {someProp: 'banana'}</script>, который потом используется для инициализации стора на клиенте. Получается, данные дублируются в верстке и стейте. Человек хочет на клиенте из верстки и компонентов восстановить стейт, чтобы не дублировать данные. Но это сделать невозможно, в стейте могут быть какие-то данные, которые не используются для рендера текущей страницы, но тем не менее важны.
На самом деле, тут можно упороться. Мы же серверный рендеринг для людей делаем для визуальной скорости загрузки, пока грузится js, человек уже видит готовую страницу, отрендеренную на сервере. Но если js есть в кэше браузера - в серверном рендеринге нет смысла. Мы можем отдавать для статики заголовки для кэширования, скажем, на сутки, и ставить какую-нибудь куку на сутки. На сервере при обработке запроса, если кука есть - значит js в кэше браузера - не рендерим на сервере, не дублируем данные, не нагружаем лишний раз сервер. Куки нет - рендерим на сервере, ставим куку.
Для роботов, конечно, всегда рендерим
Да. Именно это имел в виду. Спасибо за объяснение этой оптимизации. Звучит круто
Бред
Ну почему бред? Я же ясно написал ниже, что искал бест практики в этой области. )


Sergey
10.01.2017
06:29:08
выглядит сложновато

Alexander
10.01.2017
06:30:00
Совсем некультурно

Sergey
10.01.2017
06:31:12
лучше разделить всю логику в обычном if else ?

Alexander
10.01.2017
06:32:28
Для начала лучше стейт не мутировать

Sergey
10.01.2017
06:32:57
а чем плох этот метод?
ты имеешь ввиду, то что, сначала без setState устанавливаю значения?

Alexander
10.01.2017
06:33:51
Да

Sergey
10.01.2017
06:34:05
а чем это плохо?

Alexander
10.01.2017
06:35:17
https://facebook.github.io/react/docs/state-and-lifecycle.html#using-state-correctly

Sergey
10.01.2017
06:38:53
чет я не увидил там объяснений

Ivan
10.01.2017
06:40:41

Alexander
10.01.2017
06:40:45
Иди перечитай

Ivan
10.01.2017
06:41:07
В твоем случае все будет работать
Пока ты последний setState не уберешь

localvoid
10.01.2017
06:41:43
16.0.0-alpha на npm'е, можно пробовать файбер :)

Sergey
10.01.2017
06:42:49
Иди перечитай
там нет объяснений почему плохо мутировать два метода, иди перечитай

Andrey
10.01.2017
06:53:52
Но ведь... Гуру реакта не мутируют стейт...?

Google

Sergey
10.01.2017
06:55:02
ну может у него просто такой стиль, а мутирование на производительности может не как не сказываеться

Andrey
10.01.2017
06:55:51
На самом деле всё дело в производительности. Реакт под капотом сравнивает старый стейт и новый. И когда ты мутируешь старый стейт, то реакт не видит изменений между старым и новым.

Alexander
10.01.2017
06:56:25
Че?)
Ссылку на код в студию

Admin
ERROR: S client not available

Sergey
10.01.2017
06:56:45
+
я часто мутирую, проблем еще не было

Andrey
10.01.2017
06:57:07
Ой напали. Я только объяснил как сам понял

Sergey
10.01.2017
06:57:15
там есть с этим проблемы

Andrey
10.01.2017
06:57:49
Я про реконсулиейшон или как его там..

Alexander
10.01.2017
06:58:43
Дело в том, что есть определенный метод апдейта. В доке написано почему — вызывает lifecycle методы и рендер. В принципе ничто не мешает намутировать стейт напрямую и потом вызвать forceUpdate, например, но это как-то пахнет

Sergey
10.01.2017
06:59:05
это даа

Andrey
10.01.2017
07:00:37
Производительность не пострадает?
Ща читану чо за форсапдейт

Sergey
10.01.2017
07:01:34
ф-ция которая обновляет компонент

Alexander
10.01.2017
07:01:36
Может, ведь при forceUpdate не будет проверки на shouldComponentUpdate
Но дуру не гоните, используйте setState. Реакт может поменять кишки и ваш код сломается или сами сломаете случайно (setState уберете) и потом будете искать. А еще это дети увидеть могут

Andrey
10.01.2017
07:03:04
Calling forceUpdate() will cause render() to be called on the component, skipping shouldComponentUpdate()
Это говнокод короч

Google

Сергей
10.01.2017
07:03:26
Короче, есть общие правила написания кода на реакте, есть смысл им следовать иначе вас будут проклинать либо ваши коллеги, либо программисты которым придется это разгребать

Alexander
10.01.2017
07:04:07

Andrey
10.01.2017
07:05:03
Я один не понимаю что пишет человек про кишки помененые реактом?

Regina
10.01.2017
07:05:33
Ребят, стоит переходить на react-route 4? :)
или лучше подождать

Alexander
10.01.2017
07:06:26

Сергей
10.01.2017
07:07:06

Andrey
10.01.2017
07:07:25
Потерял нить.

Дмитрий
10.01.2017
07:07:48
Так вот она, валяется

Andrey
10.01.2017
07:07:51
〰 нить найдена!

Regina
10.01.2017
07:08:41
@sunify на гитхабе пока 3 официальная, но по 4 уже доки есть и она кардинально отличается от 3

Alexander
10.01.2017
07:08:49
Потерял нить.
Я про то, что в реакте определен API для апдейта стейта, если ты его не используешь или используешь как Сергей, в одной из будущих версий можешь получить доп. ложку говна при апдейте.

Andrey
10.01.2017
07:09:53

Sergey
10.01.2017
07:09:56