
anoru
08.03.2017
07:38:32
уже по названиям понятно, что делают

Evjeni
08.03.2017
09:28:56
Господа, на сколько большие у вас компоненты? У меня компонент на 125 строк, бить за такое не будут?

Ivan
08.03.2017
09:29:35
это вместе с методами или только дом?

Amon Bower
08.03.2017
09:30:36

Google

Evjeni
08.03.2017
09:30:46

Ivan
08.03.2017
09:31:18
ну тогда норм на мой взгляд, у нас на проекте пожирнее есть

Amon Bower
08.03.2017
09:33:20
И кстати, такой вопрос. Это норм, что бандл 6мб? Я просто не юзал реакт, недавно только взялся за него. Кропотливо относился к минификации своего бандла, без jq. 1мб это для меня был ад, а тут реакт аж на 6мб бандл создал.
То есть, для реакта это норм?

anoru
08.03.2017
09:36:26
не, это плохо.
Много статей как уменьшить бандл
вот тебе на русском https://habrahabr.ru/post/308926/

Igor
08.03.2017
09:56:57
devtool в вебпаке закоменти и сбилди, будет в разы меньше

Anton
08.03.2017
10:36:40

Ruslan
08.03.2017
10:37:55
Статья конечно капитанская, да еще и для w1

Max
08.03.2017
10:42:22
чятик чмоке
вопрос нубский — кто как передает индекс/пропнейм в чайлд-компонент чтобы обратно получить его в onChange например?
с мемоизацией как-то ебловато выглядит
this.getOnChange = _.memoize((i)=> (value)=> this.onChange(value, i))
this.onChange = (value, i) => console.log(i)
...
... arr.map(item, index) => {<SomeInput onChange={this.getOnChange(index)}}

Amon Bower
08.03.2017
10:42:52
Понял, спасибо

Google

Alex
08.03.2017
10:46:50
@syabro ты имеешь в виду подход к обмену данными между родителем и ребенком? посмотри тут #1
https://hackernoon.com/10-react-mini-patterns-c1da92f068c5#.k890slyvs

Max
08.03.2017
10:47:46
больше никому не показывай это
()=> создает новую функцию каждый раз
соответственно привет ререндер на каждый чих

Alex
08.03.2017
10:48:52
это понятно, но суть не в этом.

Max
08.03.2017
10:49:01
так суть именно в этом
чтобы этого не было есть два варианта:
— мемоизация функций по индексу, как в моем коде
— передача какого-то аттрибута в чайлд, который он будет пробрасывать назад в onChange

Evjeni
08.03.2017
10:50:22

Max
08.03.2017
10:50:22
мне второй вариант не нравится тем что получается лишнее знание от родительского элемента
можно конечно в shouldComponentUpdate еще исключить props.onChange
но бойлерплейта много тоже получается
в каждом компоненте это фигачить

anoru
08.03.2017
10:54:13

Алексей
08.03.2017
10:55:22

Max
08.03.2017
10:56:28
ага, Pure

Алексей
08.03.2017
10:56:50
ты для конкретного кейса рассматриваешь или в общем?

Max
08.03.2017
10:57:24
в общем — хочу определить "политику партии" для проекта, чтобы код консистентный был

Алексей
08.03.2017
10:57:38
в общем я бы не советовал везде Pure пихать

Google

Max
08.03.2017
10:57:41
чтобы onChange был по одному паттерну

Алексей
08.03.2017
10:58:19
а если не везде Pure то и не обязательно парится насчет создания новой функции
плюс ты мемоизацией память просадишь
GC не соберет

Max
08.03.2017
10:58:47
вот тут да
а Pure какие проблемы?

Алексей
08.03.2017
10:59:31
я вообще к чему веду, если ты для общей практики, то не делай преждевременных оптимизаций, будет боттлнек оптимизируешь

Max
08.03.2017
11:00:10
ререндер быстрее чтоли? )

Алексей
08.03.2017
11:00:32
а с каких пор ререндер медленный?

Max
08.03.2017
11:00:35
ну я плюсом стараюсь отдавать примитивы в пропсах

Alex
08.03.2017
11:00:40
<SomeInput onChange={this.getOnChange}} /> передаст тебе в getOnChange по умолчанию event и уже в функии ты можешь вытянуть value из target или значение index ты из чего друго достаешь?

Алексей
08.03.2017
11:00:56
то есть тебе нужно считать каждый раз что быстрее в каждом кейсе ререндер или shallow compare
имхо это не нужно

Max
08.03.2017
11:01:23
Alex, я сейчас не про нативные инпуты — они у меня все во врапперах
вот например у меня один из инпутов
именно весь скрин это один инпут
RuleField
который по onChange возвращает обьект

Google

Алексей
08.03.2017
11:02:58
в общем мой тебе совет, пиши проще и не мудри ? нужна будет оптимизация - сделаешь там по-другому, учитывая что все варианты tradeoff и нет идеального решения

Max
08.03.2017
11:03:33
ну передавать ключ и autobind трейдоф в принципе
но просто эти сволочи уже заняли проп key и я не могу придумать нормальное название )

Алексей
08.03.2017
11:04:14
ну вот честно скажи, ты это делаешь так потому что у тебя сейчас тормозит что то или ты просто решил оптимизировать заранее? ?

Max
08.03.2017
11:04:14
чтобы можно было передать index или name
в одной переменной
заранее
:)

Admin
ERROR: S client not available

Алексей
08.03.2017
11:05:20
заранее
вот я и говорю - не надо ?сам потом будешь разбиратся зачем ты это нагородил и о других подумай, кто будет работать с этим)

Max
08.03.2017
11:05:35
:/
ну ладн
а во
еще четвертый вариант
в onChange наверх отдавать value, this.props
а в родителе можно в пропсах передавать индекс, нейм и вообще все что душе пожелает
и получать соответственно в onChange это

Дмитрий
08.03.2017
11:33:32
Никому больше про это не говори, нет, правда, это адуха полнейшая

Google

Алексей
08.03.2017
11:34:47

Дмитрий
08.03.2017
11:36:28
Я даже не знаю, с чего начать, то, настолько это радикальная жесть
Shallow compare это максимально быстрая проверка

Алексей
08.03.2017
11:36:54

Дмитрий
08.03.2017
11:37:13
Это, условно, === для каждого пропса

Denis
08.03.2017
11:37:21
Это if чувак

Дмитрий
08.03.2017
11:37:23
Вместо полноценного ререндера

Алексей
08.03.2017
11:38:08

Ruslan
08.03.2017
11:38:58
https://twitter.com/dan_abramov/status/759383530120110080

Алексей
08.03.2017
11:39:39

Denis
08.03.2017
11:42:57
Ничего что все компоненты по умолчанию при вызове shallow compare возвращают true
Что там такое просядет если в некоторые из них я добавлю пару чеков?

Алексей
08.03.2017
11:44:15

Denis
08.03.2017
11:44:33
Так все и так возвращают тру
Насколько много цпу займет if?

Алексей
08.03.2017
11:44:58

Denis
08.03.2017
11:45:06
В сравнении с прогоном через дом тот же

Алексей
08.03.2017
11:45:27

Kreizo
08.03.2017
11:45:31
ребят подскажите как рендерить по имени массива
http://jsbin.com/temicofeje/edit?html,js,console,output