@react_js

Страница 1033 из 5115
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
вот тебе на русском https://habrahabr.ru/post/308926/
Найс статья, типа "включите минификацию чтобы билд был меньше". Уж лучше это время потратить на чтение доков на офсайте

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
соответственно привет ререндер на каждый чих
во первых ты уверен что тебе нужна именно там оптимизация? во вторых у тебя дочерние от PureComponent что ли наследуются?

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
я вообще к чему веду, если ты для общей практики, то не делай преждевременных оптимизаций, будет боттлнек оптимизируешь

а Pure какие проблемы?
shallow compare в каждом компоненте, думаешь это быстро?

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
плюс ты мемоизацией память просадишь
При нормальном подходе просто нечему просаживаться будет

shallow compare в каждом компоненте, думаешь это быстро?
Кошмар какой, что я только что прочитал

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

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
Ничего что все компоненты по умолчанию при вызове shallow compare возвращают true
я если честно вот это не понял, можешь подробней раскрыть мысль?

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

Страница 1033 из 5115