@react_js

Страница 55 из 5115
Tim
27.04.2016
11:01:51
Вроде бы волна флуда и негодования от флуда закончилась, можно спросить про Rdux? Собрался я изучить Redux но посмотрел вот это видео: https://youtu.be/a4OhLoH0nrs и подумал что Redux не так прекрасен, стал судорожно выпилисать все байнды из react компонентов, но сильно мне это не помогло, действительно ли Redux делает приложение медленнее или наоборот? Если я тоже храню все состояние приложения в одном верхнем state и раздаю дочерним через props, нужен ли мне Redux? У меня загвоздка в том что изменив state у меня перерендериваются все компоненты, поможет ли Redux сделать так чтобы перерендеривалось только то что действительно поменялось в приложении?

Алексей
27.04.2016
11:04:24
тож видел это видео

ну если не использовать конструкцию ::handler

а биндить в конструкторе, то все не так уж и плохо будет

Google
Алексей
27.04.2016
11:05:12
а на счет приходящих props, да, каждый компонент будет перерисовываться, если подключен к redux

и это плохо, если у вас таблица на сто строк, с 20 ячейками в строке

спасает shouldComponentUpdate и какая-нить ф-ция ала _.isEqual()

аля*

Vladimir
27.04.2016
11:06:01
вообще как минимум shouldComponentUpdate должен помочь, неважно, редукс у вас наверху или просто стейт верхнего компонента

Максим
27.04.2016
11:06:35
/angular_light

Vladimir
27.04.2016
11:06:58
удалите эти сообщения плиз!

Алексей
27.04.2016
11:07:21
а в чем их прикол?

Максим
27.04.2016
11:07:23
Каждый должен тыкнуть, что бы понять чем грозит клие.

Клик

Алексей
27.04.2016
11:08:50
Так, у вас в любом случае state меняется, раз меняется state, пойдет цепочка обновлений всех компонентов

и обычная проверка

Google
from
27.04.2016
11:09:00
в каком "любом" случае?

Алексей
27.04.2016
11:09:16
а как тут форматировать код?

from
27.04.2016
11:09:18
если стейт изменился, то разумеется надо перерендеривать :)

Алексей
27.04.2016
11:09:54
work!

о, отлично

так вот

допустим у меня такой стейт {co1: 1, co2: 2}

и к нему подключаются два разных компонента, один берет св-во co1, другой co2

Andrey
27.04.2016
11:11:05
а в чем их прикол?
это синтаксис для обращения к ботам, но ботов тут нет :)

from
27.04.2016
11:11:20
тильдами
оговорился, бэктиками естессн

Алексей
27.04.2016
11:11:56
и мы меняем свойство co1 = 3, вопрос: нам нужно перерисовать второй компонент, который берет только свойство co2?

from
27.04.2016
11:12:00
и к нему подключаются два разных компонента, один берет св-во co1, другой co2
два разных компонента, каждый из которых обёрнут в свой connect()

Алексей
27.04.2016
11:12:38
так суть в том, что стейт всегда один, и редьюсер возвращает новый объект, с новой ссылкой

from
27.04.2016
11:12:43
и мы меняем свойство co1 = 3, вопрос: нам нужно перерисовать второй компонент, который берет только свойство co2?
если у тебя в mapStateToProps не участвует col2, то соответствующий элемент не будет перерендериваться

Алексей
27.04.2016
11:12:50
будет

потому что ссылки изменились

редьюсер возвращает новый объект, с новой ссылкой

from
27.04.2016
11:13:06
он сравнивает

Алексей
27.04.2016
11:13:27
если co - примитив, то сравнение пройдет

Google
Алексей
27.04.2016
11:13:37
а если co2 объект?

from
27.04.2016
11:14:04
на то immutable стейт

Алексей
27.04.2016
11:15:07
так immutable подразумевает ,что мы не можем менять сущность, значит мы просто создаем новую копию с измененными свойствами, и ссылки уже разные

посмотрите видео, там об это говорится как раз

Andrey
27.04.2016
11:15:18
там используется shallowEqual для проверки, по этому должно корректно сравнивать не только приметивы

from
27.04.2016
11:15:33
https://github.com/reactjs/react-redux/blob/master/src%2Fcomponents%2Fconnect.js#L76-L78

Ҫѐҏӗѫӑ
27.04.2016
11:18:34
с объектами все ок будет, проверка быстрая, но выполнится много лишней фигни

другое дело — массив. вот там беда

mapStateToProps тот же — быстрый, но выполнится

два одинаковых коннекта обычно - это два разных на самом деле

и тд

Andrey
27.04.2016
11:20:21
да, проверки выпонятся, но не должен произойти перерендер

Ҫѐҏӗѫӑ
27.04.2016
11:20:58
боттлнеки могут быть и в этих проверках в аппах с упором на сильный риалтайм

тем более с массивами

но скоро везде будут Map и Set, будет более менее норм

from
27.04.2016
11:22:45
но скоро везде будут Map и Set, будет более менее норм
первоначальный вопрос не в скорости был, а в том, будет ли ререндер реакт компонента после обновления общего стейта, если компонент зависит от того куска стейта, который не изменился

Ҫѐҏӗѫӑ
27.04.2016
11:23:13
вроде там была речь о том, что их будут дергать со стороны

а так, если не мутировать, то все хорошо в большинствей кейсов, да

Алексей
27.04.2016
11:24:46
так будет и в том случае, если два компонентам используют разные части одного редьюсера? При этом одна из этих частей поменялась

оба компонента перерендерятся? или только тот, который подключен к изменившейся части редьюсера?

Google
Ҫѐҏӗѫӑ
27.04.2016
11:25:36
компоненты не используют редьюсеры

Алексей
27.04.2016
11:25:46
контейнеры*

Admin
ERROR: S client not available

Ҫѐҏӗѫӑ
27.04.2016
11:26:12
это не связано напрямую никак

Andrey
27.04.2016
11:26:15
перерендерится только тот, где фактически изменились данные

Ҫѐҏӗѫӑ
27.04.2016
11:26:26
на что подписаны, от того и изменятся

Denis
27.04.2016
11:26:37
@chicoxyzzy @iamstarkov @anorudes @maullerz, готовы? и в горе, и в радости, пресекать вспышки флуда и разгонять школоту на пользу общую и благо для?

+ @hitmaker готов помочь

Ҫѐҏӗѫӑ
27.04.2016
11:28:12
мне пофиг. могу разгонять, могу не разгонять

Tim
27.04.2016
11:29:54
http://jsraccoon.ru/react-sort-and-search Конкретный пример если позволите, выполнял этот урок, вот мое решение, и здесь при нажатии на кнопку сортировки перерендеривается все? http://kortv.github.io/react-sort/ https://github.com/kortv/react-sort-and-search Это пример одного из участников на Redux, и у него перерендеривается только то что изменилось online http://artanik.github.io/react-challenge-sort-and-search/ git https://github.com/artanik/react-challenge-sort-and-search Проверял в chrome Enable paint flashing Если не сложно, можете научить, почему c Redux перерендеривается только то что нужно, а у меня все?

Andrey
27.04.2016
11:31:27
сравни структуры сторов и connect , может ты прокидываешь весь стор, а другой только нужную часть )

Ҫѐҏӗѫӑ
27.04.2016
11:32:55
или в стейте радаксовом нужная часть всегда подменяется по какой-то причине

btw не увидел тут редакса вообще https://github.com/kortv/react-sort-and-search/blob/master/package.json

Vladimir
27.04.2016
11:38:11
у него и нет редакса, он же написал это. Перерендеривается все, потому что не прописаны shouldcomponentUpdate у компонентов

Tim
27.04.2016
11:38:34
Не не не я редакс только учу, я его не понимаю и сравниваю свой чистый реакт с редаксом

Vladimir т.е мне нужно в каждом компоненте прописать shouldcomponentUpdate?

Ҫѐҏӗѫӑ
27.04.2016
11:39:44
компоненты всегда ререндерятся при получении новых пропсов или изменении стейта

предотвратить это силами реакта можно с помощью shouldComponentUpdate

Tim
27.04.2016
11:40:39
Сережа, но в версии с редаксом такого нет, или я чего-то не понимаю?

там у него вроде нигде shouldComponentUpdate не используеться

Google
Denis
27.04.2016
11:41:03
https://medium.com/@alexandereardon/performance-optimisations-for-react-applications-b453c597b191#.pc1m50g8w Вот хорошая свежая/ статья про shouldcomponentUpdate

Ҫѐҏӗѫӑ
27.04.2016
11:41:09
там не приходят новые пропсы из-за connect (который в react-redux)

точнее даже не из-за него, а из-за самого редакса

Tim
27.04.2016
11:42:42
вот именно в этом и вопрос, т.е если я буду использовать Redux, он сам за меня будет выяснять что мутировало а что нет, и перерисует только нужное?

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

Ҫѐҏӗѫӑ
27.04.2016
11:44:23
не то чтобы сам, но если придерживаться иммутабельности, то он в большинстве случаев поможет

реселект для другого

он мемоайз делает в коннектах, когда пропсы надо вычислить перед тем, как пробросить

Tim
27.04.2016
11:45:41
Т.е если подключать Immutable то все будет хорошо? Redux проверит что изменилось и реакт отрендерит только нужное?

Ҫѐҏӗѫӑ
27.04.2016
11:46:16
с Immutable не всегда хорошо, потому что у него есть своя цена. он не дает иммутабельность бесплатно

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