
Stepan
25.01.2018
23:30:23
И в зависимости от состояний компонентов выдаешь разное отображение

Alesia
25.01.2018
23:30:28
Привет всем. может кто может посоветовать какую тему под webstorm для синтаксиса реакта?

Stepan
25.01.2018
23:30:40

Алексей
25.01.2018
23:31:46
разное отображения - имеется в виду разные стили для одного и того же элемента?

Google

Алексей
25.01.2018
23:31:55
типа селектор 1

Stepan
25.01.2018
23:31:56

Алексей
25.01.2018
23:31:57
стили разные
понял

Stepan
25.01.2018
23:32:05
Селекторов типа нет)
Есть компонент, его состояние и отображение

kana
25.01.2018
23:32:19

Stepan
25.01.2018
23:32:22
И они связаны напрямую

Алексей
25.01.2018
23:32:32
оу
вижу
крутяк

kana
25.01.2018
23:32:40
ну каскадность, если хочется, тоже можно заюзать

Алексей
25.01.2018
23:33:16
по хорошему, под каждый стиль компонента выделяется отдельный файл?

Google

kana
25.01.2018
23:33:17
типа
const Button = styled.button``;
const Wrapper = styed.div`
${Button} {
color: red;
}
`;
но я бы не советовал

Stepan
25.01.2018
23:33:30

Алексей
25.01.2018
23:34:04
и как, утопаешь в стилях?

kana
25.01.2018
23:34:04
это можно решить зачастую через просто расширение стиля
const MyButtonInWrapper = styled(Button)`
color: red;
`;

Alesia
25.01.2018
23:34:22
имела ввиду подсветку синтаксиса) сменить цвета на менее ядреные

Stepan
25.01.2018
23:34:29

kana
25.01.2018
23:34:30
зачем выносить Wrapper например

Stepan
25.01.2018
23:35:06
Лучше Darcula не придумали ничего

Алексей
25.01.2018
23:35:49
Понял. Спасибо за инфу, погнал я спать) Всем спокойной ночи!

Stepan
25.01.2018
23:41:53
Спокойной

Алексей
25.01.2018
23:42:40
Пока не ушёл, вопрос ещё появился. После того, как в компоненте с полями и кнопкой add произошёл submit с новым данными, нужно как то их передать в соседний компонент. Получается, их нужно сначала передать в самый старший компонент, а затем в компонент с таблицей? Т.е. source of truth будет сам app.js(враппер)?

Пг
25.01.2018
23:43:00

Stepan
25.01.2018
23:44:26
Но часто бывает так, что компоненты как бы соседи, но каждый в своей ветке очень глубоко вложен
Тогда-то на помощь и приходит редакс

Алексей
25.01.2018
23:46:56
Понял. А если стейт меняется в самом app.js,то ререндер идёт от компонента, где изменился стейт и вниз по дереву? В моем случае, от app.js и вниз?

Пг
25.01.2018
23:47:59
Кароче, чуваки, немного ночной оффтопик. Можно немного померяться письками
В каком самом большом проекте на реакте вы участвовали? Кол-во строчек кода/Кол-во компонентов/Кол-во людей в команде/etc.

Google

Алексей
25.01.2018
23:48:09
Или любое изменение стейта создаёт вирт дом всего приложение и ререндерит все приложение (его внутр части)?

Stepan
25.01.2018
23:48:33

Алексей
25.01.2018
23:49:07
В плане, место изменения стейта и вниз?

Stepan
25.01.2018
23:49:14
Да

Пг
25.01.2018
23:49:15

Алексей
25.01.2018
23:49:46
Спасибо

Stepan
25.01.2018
23:57:25
Скорее всего
За такие тонкости ручаться не стану

Алексей
25.01.2018
23:58:37
Имеешь в виду изменение стейта в любом месте приложения?

Stepan
25.01.2018
23:59:56
React doesn't currently take advantage of scheduling in a significant way; an update results in the entire subtree being re-rendered immediately. Overhauling React's core algorithm to take advantage of scheduling is the driving idea behind Fiber.
Ну, кажется, с 16 версии что-то могло поменяться

Stepan
26.01.2018
00:00:31
В общем, не парься, реакт делает как можно меньше работы :)

Алексей
26.01.2018
00:01:37
Оке

Stepan
26.01.2018
00:01:44
Вообще, если это дерево, то можно проводить обновления только там, где нужно
Раз уж это рекурсивная структура
Так что, думаю, так и происходит
Впрочем, это тонкости

Алексей
26.01.2018
00:02:12
Меня успокоили слова in the entire SUBTREE

Пг
26.01.2018
00:02:17
Не будет проходить там где нужно)
Доказано на практике, что shallowCompare не отрабатывает как нужно во многих случаях

Google

Stepan
26.01.2018
00:02:20
Ага
Ну вот

Пг
26.01.2018
00:02:58
Кстати, есть смысл заменить на PureComponent все компоненты у которых нету shouldComponentUpdate?

Stepan
26.01.2018
00:03:12
И там return true
:))

Пг
26.01.2018
00:03:39
Понял
Окей, у каких компонентов стоит заменять?

Stepan
26.01.2018
00:04:32
Предположительно, у тех, которые получают в пропсы не примитивы)

Admin
ERROR: S client not available

Пг
26.01.2018
00:04:42
И кстати, я не совсем про аддон shallow compare, я про дефолтное сравнение this.props !== nextProps || this.state !== nextState

Stepan
26.01.2018
00:05:12
Так там вроде каждую пропсу по одной сравнивают

Пг
26.01.2018
00:06:02

Stepan
26.01.2018
00:06:31
Если примитивы получает, то в PureComponent уже всё написано
Если только их
А где именно юзать
Да черт знает, где тормозит)

Пг
26.01.2018
00:08:10
Да по факту у меня ничего кроме профиля не тормозит и то только потому что я его как дебил сделал одним компонентом)
Лень было разделять и никак руки не дойдут

Google

Пг
26.01.2018
00:09:51
Кстати, можно как-то спастись от блядского ререндеринга всего и вся при рендере загрузчика?
this.state.loader ? <div className="loader" /> :
<div>
<Component1 />
<Component2 />
<Component3 />
</div>
Если даже на пол секунды включится loader все будет ререндерится заново, даже то что не должно этого делать, если бы оно где-то сохранилось
Или только ручками сохранять?

Дмитрий
26.01.2018
00:12:23
А в чём проблема что что-то заререндерится?

Sergey
26.01.2018
00:13:22
ты же прямо указываешь ему всё ререндерить

Stepan
26.01.2018
00:13:50
Это в теории
А как на практике?
Стоит игра свеч?

Дмитрий
26.01.2018
00:14:44
Перфоманс — это системный подход, а не микрооптимизации)

Пг
26.01.2018
00:14:59

Stepan
26.01.2018
00:15:16
Ну там кто-то кидал пример с большим списком и PureComponent

Пг
26.01.2018
00:15:19
а половина из нее остается прежней, а то и более

Stepan
26.01.2018
00:15:20
Работало плавнее :)

Sergey
26.01.2018
00:15:37

Stepan
26.01.2018
00:15:41

Sergey
26.01.2018
00:15:44
ты же реально написал ИЛИ лоадер ИЛИ страница

Дмитрий
26.01.2018
00:16:05

Пг
26.01.2018
00:17:09