
Valentin
15.01.2017
01:13:06
Посмотри на пример, там все понятно. DefinePlugin используешь?

blkmrkt
15.01.2017
01:13:25
кстати что у нас в 2017 со стейт-менеджментом, может новый велосипед изобрели?

Cocker
15.01.2017
01:14:56

Vladimir
15.01.2017
01:59:53

Google

Andrew
15.01.2017
02:10:38
Подскажите решение: есть b2b интернет-магазин на Реакте с mobx, и там есть корзина, которая начинает тормозить при овер 500 продуктах в ней. Тормозит от того, что там куча running totals: net weight, price, pallets, customs fees итд., которые пересчитываются каждый раз при изменении корзины.
С чего начинать оптимизировать это? Хранить totals отдельно и менять их при каждом действии с корзиной? Если да, то как можно хукнуть изменения объекта в стейте mobx? В redux есть middleware, а как тут быть?
по идее то что не изменилось не нужно бы пересчитывать, например если добавляется элемент, просто к прежней сумме его добавить, не считать сумму полностью, если компонент удалили из орзины - тупо вычесть из суммы. если поменяли количество, вычесть прежнее значение, добавить новое. это очень легкие операции.

Kirill
15.01.2017
02:27:41

Denis
15.01.2017
03:02:33
Кто юзал https://github.com/alibaba/rax ? :) Он реально 100% совместим и быстрей?

localvoid
15.01.2017
03:08:52
его замечательный бэнчмарк показывает насколько его либа быстрее чем реакт в дев моде

Denis
15.01.2017
03:25:13
Как я понял разница глобальная лишь в синхронном setState

localvoid
15.01.2017
03:27:14
вся разница в мелких деталях, о которых многие разработчики даже не догадываются :) например не вижу там нормализации с неявными префиксами для ключей, хотя смотрел исходники бегло, качество кода достаточно низкое.

Mikhail
15.01.2017
03:44:19
основной плюс rax в встроенном рендерере в weex (https://weex-project.io, очень популярная штука в Китае). А так он не быстрее, результаты нормального бенчмарка (https://github.com/taobaofed/server-side-rendering-comparison/pull/5) примерно одинаковы


Roman
15.01.2017
04:21:07
Подскажите решение: есть b2b интернет-магазин на Реакте с mobx, и там есть корзина, которая начинает тормозить при овер 500 продуктах в ней. Тормозит от того, что там куча running totals: net weight, price, pallets, customs fees итд., которые пересчитываются каждый раз при изменении корзины.
С чего начинать оптимизировать это? Хранить totals отдельно и менять их при каждом действии с корзиной? Если да, то как можно хукнуть изменения объекта в стейте mobx? В redux есть middleware, а как тут быть?
посмотри, не меняется ли state в процессе пересчёта. выглядит так, словно в цикле пересчёта или по каждому полю идут вызовы this.setState, вместо одного вызова в конце.
ну и не идёт ли пересчёт по объектам внутри state

Bogdan
15.01.2017
07:32:49
кто юзает sublime text 3? Как там отключить проверку всяких обновлений при старте, чтобы не было тормозов?

blkmrkt
15.01.2017
08:18:30

Vladimir
15.01.2017
08:30:28
Например - повесить reaction на изменение корзины и в нём уже смотреть как изменилась и как обновить счетчики

Google

Vladimir
15.01.2017
08:34:32

blkmrkt
15.01.2017
08:35:14

Vladimir
15.01.2017
08:37:05
Ааа, тогда возможно
У меня computed - получение объектов по их idшникам из общего стора объектов

blkmrkt
15.01.2017
08:37:49
плюс вдобавок к этому она еще считает subtotals для каждой категории товара

Vladimir
15.01.2017
08:38:27
Ну в таком случае, конечно, лучше разбить на обсерваблы и их изменять в реакции

Igor
15.01.2017
09:23:44
Коллеги, а есть опыт частичного применения react, то есть страница уже готовая. Мне без глобального стора, нужно вставить пару виджетов в конкретные места. Это нормально работает?

Vladimir
15.01.2017
09:23:59
Да

Igor
15.01.2017
09:24:12
Или например заменить все классы .div_react на реакт-компоненты.

Vladimir
15.01.2017
09:24:43
Зачем? Просто сделайте рендер в определенный див

Igor
15.01.2017
09:24:57
Понял, оки.
Оправдано ли тогда применение preact/inferno?

Vladimir
15.01.2017
09:26:21
Ну, как сказать, если 50кб для вас много-тогда оправдано

Igor
15.01.2017
09:27:46
Понял, вообще интресно было inferno пощупать =)

pofigizm
15.01.2017
12:30:27
В продолжении оптимизации размера бандла:
yarn install && webpack // bundle.js === 940 kb (min)
...
npm install && webpack // bunble.js === 807 kb (min)
вообщем картина такая:
immutable: ^3.8.1
draft-js: свой форк,
└── immutable: ~3.7.4
draft-js-plugins-editor: 2.0.0-beta1
├── immutable: ^3.8.1
└── draft-js: >=0.9.1
└── immutable: ~3.7.4
c yarn я получаю 2 draft-js и 3 immutable
c npm я получаю 1 draft-js и 2 immutable
вот так, заглядывайте внутрь ваших бандлов ))

Nikita
15.01.2017
13:06:48
а dedupe plugin это не устраняет?

pofigizm
15.01.2017
13:07:38
нет

Vasiliy
15.01.2017
13:38:05
что думаете про redux-orm?
я видел уже поднималась эта тема в чатике, но ничего конкретного не вычитал из диалогов
кто-нибудь использует? как сама идея и ощущения? (: спрашиваю потому что читаю сейчас вот это http://blog.isquaredsoftware.com/series/practical-redux/

Google

Дмитрий
15.01.2017
13:53:39
При большом стейте начинает быть очень выгодным
Но не понятно что у него с производительностью, в том плане что неправильная организация этих моделей может больно бить по реакту
А в код пока лезть времени не было
Но думаю должно быть ок)

Vasiliy
15.01.2017
13:54:48
я просто открыл код и на первый взгляд все очень даже ок,
но тоже толком не вникал
я думаю многие пишут сами эти абстракции, кому нужно, а тут вроде как из коробки все работает, мб не совсем в том виде, в котором я это себе представлял, но стоит внимания

Дмитрий
15.01.2017
13:58:14
У меня у самого кажется скоро свой орм будел, лол)

Name
15.01.2017
14:53:02
export varname https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export
ты пытаешься экспортировать приконекченный компонент без имени
оставь export default для этого компонента, как на первом скриншоте, а остальные экспортируй как обычно

Sergey
15.01.2017
14:57:20
ну вроде да

? ethorz
15.01.2017
14:58:58
export let a = 1;
потом просто import connect, {a} from "./"

Kate
15.01.2017
16:43:01
а чего может не запускаться проект?

Kate
15.01.2017
16:43:10
я такой модуль что-то нагуглить не могу
вчера все ок было

Danil
15.01.2017
16:45:42
Почему после root стоит ; ?
В reactdom render

Kate
15.01.2017
16:47:35
нет, дело не в ней

Dreamerinnoise
15.01.2017
16:48:03
Ну смотри, что добавляла

Danil
15.01.2017
16:48:05
Ну её там точно быть не должно

Kate
15.01.2017
16:49:49
я убрала, но нагуглила что-то с метеором, сейчас пробую, не знаю что такое метеор

Google

Kate
15.01.2017
16:49:53
https://github.com/meteor/meteor/issues/8056
но ошибка такая же

Dreamerinnoise
15.01.2017
16:50:23

Admin
ERROR: S client not available

Lupsick
15.01.2017
17:29:51
ты используешь create-react-app?

Azein
15.01.2017
17:57:46
что думаете про redux-orm?
Я помогал немног Марку с этой статьей. Вообще, мне идея показалась интересной, но конкретно редакс-орм дает такую нехилую доп.сложность абстракции. Не стал у себя использовать, не настолько сложная работа с данными.
Я думаю, может подойти в случаях, когда какой-нибудь graphql не охота/времязатратно, а инструментарий такой нужен в клиенте.

Alexander
15.01.2017
17:59:13
Нет https://g.co/kgs/rD5OtU

Таймураз
15.01.2017
18:04:35

Vasiliy
15.01.2017
18:21:01

pofigizm
15.01.2017
18:21:19
И эта хрень без отказа от yarn не решается никак?
пока не думал как нормально решить, но по быстрому так захачил
"postinstall": "rm -rf node_modules/draft-js/node_modules/immutable && rm -rf node_modules/draft-js-plugins-editor/node_modules/draft-js && rm -rf node_modules/draft-js-plugins-editor/node_modules/immutable",

Таймураз
15.01.2017
18:22:03

pofigizm
15.01.2017
18:22:45
версии наверно

Таймураз
15.01.2017
18:22:46
Надо внимательнее почитать его логику

pofigizm
15.01.2017
18:23:47
хотя может это dedupe в webpack 2 не правильно работает

Таймураз
15.01.2017
18:25:16

pofigizm
15.01.2017
18:26:28
может завтра попробую. там конфиг надо переписывать.

Таймураз
15.01.2017
18:30:48

anoru
15.01.2017
18:35:09

Google

pofigizm
15.01.2017
18:38:11
Есть объяснение почему такая разница?
я ж написал
c yarn я получаю 2 draft-js и 3 immutable
c npm я получаю 1 draft-js и 2 immutable
причина - разные версии пакетов, но они по разному обрабатывают

Dmitry
15.01.2017
18:40:07
А как нпм ставит 1 версию draft js, если в форке что-то по другому работает?

Kate
15.01.2017
18:40:16

Alexander
15.01.2017
18:54:35
может кто знает почему ругается на такую запись:
class ProfileForm extends Component {
state = { user: '' };
Module build failed: SyntaxError: Unexpected token (6:8)
4 |
5 | class ProfileForm extends Component {
> 6 | state = { user: '' };
| ^

Azein
15.01.2017
18:59:38
constructor(){
super()
this.state = {}
} - вот так сойдет

Alexander
15.01.2017
19:00:44
c констрактор понятно
почему без него не взлетает?

Name
15.01.2017
19:00:51

Alexander
15.01.2017
19:03:39
спасибо

Cocker
15.01.2017
20:16:03
Народ, вопрос такой: когда юзеру надо сменить пароль, он по идее его вводит два раза: пароль и подтверждение пароля, чтобы быть более уверенным, что он знает, что вводит. На фронтенде валидируем, что пароль подходит по правилам и что оба пароля одинаковые, и только после этого посылаем на бекенд. Теперь вопрос: надо ли на бекенд посылать оба пароля, или только один?

Таймураз
15.01.2017
20:16:28
Один

Cocker
15.01.2017
20:18:23
А повторную валидацию пароля надо на бекенде делать?
И шифруете на бекенде или на фронтенде?

Dmitrii
15.01.2017
20:21:57
зависит от логики, если требуется то можете посылать два пароля и валидировать на бэкенде тоже. Шифтровать на бэкенде