
Алексей
13.10.2017
15:44:06

from
13.10.2017
15:44:08
чтоб можно было дополнять своими правилами

Алексей
13.10.2017
15:44:46
вон формик обходятся
There are two ways to use Formik:
withFormik(): A Higher-order Component (HoC) that accepts a configuration object
<Formik />: A React component with a render prop

from
13.10.2017
15:45:00

Google

Алексей
13.10.2017
15:45:00
Не так уж и обходятся

from
13.10.2017
15:45:11
в смысле?)

Алексей
13.10.2017
15:45:21
ну можно да, но всё равно
как-то не то

from
13.10.2017
15:46:13
в смысле render prop для тебя "не то"?
как по мне это как раз лучший способ композиции сейчас

Алексей
13.10.2017
15:46:15
причём там в проп render походу надо кидать форму

Max
13.10.2017
15:47:39
велосипед
поддерживаю алексея в плане НОС-ов

Алексей
13.10.2017
15:47:57
тем более никто не мешает сделать так:
withForm(...)(
({form}) => (<form> ... </form>)
)

from
13.10.2017
15:48:02

Алексей
13.10.2017
15:48:11

Google

Max
13.10.2017
15:48:17
каждый НОС отвечает за свою часть логики
Form - за хранение стейта формы
FormValidator за валидацию

from
13.10.2017
15:48:46

Max
13.10.2017
15:49:08
не вижу проблемы )

Алексей
13.10.2017
15:49:22
А зачем динамически оборачивать?

from
13.10.2017
15:49:25

Max
13.10.2017
15:49:29

Vladimir
13.10.2017
15:49:30
redux-form выглядит наиболее развитым решением

from
13.10.2017
15:49:39

Алексей
13.10.2017
15:49:52

from
13.10.2017
15:50:09

Юра
13.10.2017
15:50:10

Vladimir
13.10.2017
15:50:19
это я масла подливаю

Max
13.10.2017
15:50:31

from
13.10.2017
15:50:31

Vladimir
13.10.2017
15:50:56

Max
13.10.2017
15:51:06
Вов, что значит “такой же функционал"?

Алексей
13.10.2017
15:51:21
redux-form выглядит наиболее развитым решением
Там Field, для которого надо ещё свой компонент писать дополнительный, если хочется что-то более сложное, чем какой-нибдуь input. Да и с редаксом не всегда такая тесная связь нужна. Но да, на самом деле redux-form пока что один из самых популярных

from
13.10.2017
15:51:30

Google

Алексей
13.10.2017
15:52:21
Статическая
а зачем тебе динамическая?
и что тебе мешает в любом компоненте делать
const MyFormHoc = withForm()(MyForm);
и юзать как компонент, если уж так надо

Юра
13.10.2017
15:53:26
А как композиция в реакте сказывается на перформансе? Просто интуитивно кажется что делать кучу HOC-ов чревато тормозами.

Дмитрий
13.10.2017
15:53:59
Тормозами черевата плохая архитектура

Алексей
13.10.2017
15:54:16

Юра
13.10.2017
15:54:49
Например, в material-ui некоторые компоненты вызывают каскадное обновление что тормозит реконсиляцию.

Дмитрий
13.10.2017
15:55:03
Ну вот видишь

Алексей
13.10.2017
15:55:08
Хотя наверное можно придумать какую-нибудь магию для схлопывания этой конструкции в один компонент

Юра
13.10.2017
15:55:15

Алексей
13.10.2017
15:55:51
но это на самом деле надо на практике изучать
как это влияет на производительность

Max
13.10.2017
15:57:20

Юра
13.10.2017
15:57:41
Я думаю, что все портит React.createElement. Без него HOC-и это просто чистые функции которые могут быть очень быстро вызваны и их умеет оптимизировать компилятор.

Max
13.10.2017
15:57:47
Рекомпоуз куча народа юзает

Алексей
13.10.2017
15:58:11
Почему?₽
Ну интуитивно кажется, что на производительность негативно повлияет. Точнее точно повлияет, но вот насколько - это большой вопрос

Max
13.10.2017
15:58:15

Юра
13.10.2017
15:58:50

Алексей
13.10.2017
15:59:13
А кто знает что именно делает React.createElement? Просто констурирует plain js object?


from
13.10.2017
16:02:27
а зачем тебе динамическая?
и что тебе мешает в любом компоненте делать
const MyFormHoc = withForm()(MyForm);
и юзать как компонент, если уж так надо
с телефона до этого был
Короче
Каждый раз когда кто-то пишет export withStuff(Component) он теряет весь смысл разделения компонентов на презентейшнл и контейнеры
Теперь навсегда Component привязан к определённой логике / конфигурации (смотря что хок делает). Иногда это оправдано. Чаще — нет. Но так или иначе мы потеряли возмножность "предоставить" функционал там, где он внезапно понадобился
представим, что мой мегаполезный hoc withStuff() действительно делает че-то полезное, что может пригодиться очень часто.
Пишу-пишу я лейаут типа <div><h1>stuff info</h1></div> и вдруг понимаю, что в заголовке мне было бы так здорово иметь те данные, которые даёт withStuff. Что делать? Создавать новый файл с компонентом, оборачивать его в withStuff, импортить, вставлять в h1
А имея умный компонент, который представляет данные через render prop, у нас получится живая композиция:
<div>
<h1>
stuff info:
<WithStuff render={data => <span>{data.info}</span>} />
</h1>
</div>
это мегаудобно


Igor
13.10.2017
16:03:16

Google

Юра
13.10.2017
16:03:44

Алексей
13.10.2017
16:03:57
тогда да, надо запилить компилятор jsx в те самые объекты

Дмитрий
13.10.2017
16:04:14
В фп для таких кейсов chainRec и он вполне себе объект
Потому что стек не резиновый

from
13.10.2017
16:05:02

Юра
13.10.2017
16:05:15

Andrey
13.10.2017
16:06:01

Admin
ERROR: S client not available

Дмитрий
13.10.2017
16:06:21

Юра
13.10.2017
16:06:42

Дмитрий
13.10.2017
16:06:55
Формально в es6 уже есть оптимизация, но все её вертели


Алексей
13.10.2017
16:07:11
с телефона до этого был
Короче
Каждый раз когда кто-то пишет export withStuff(Component) он теряет весь смысл разделения компонентов на презентейшнл и контейнеры
Теперь навсегда Component привязан к определённой логике / конфигурации (смотря что хок делает). Иногда это оправдано. Чаще — нет. Но так или иначе мы потеряли возмножность "предоставить" функционал там, где он внезапно понадобился
представим, что мой мегаполезный hoc withStuff() действительно делает че-то полезное, что может пригодиться очень часто.
Пишу-пишу я лейаут типа <div><h1>stuff info</h1></div> и вдруг понимаю, что в заголовке мне было бы так здорово иметь те данные, которые даёт withStuff. Что делать? Создавать новый файл с компонентом, оборачивать его в withStuff, импортить, вставлять в h1
А имея умный компонент, который представляет данные через render prop, у нас получится живая композиция:
<div>
<h1>
stuff info:
<WithStuff render={data => <span>{data.info}</span>} />
</h1>
</div>
это мегаудобно
Понял. Тогда в своей """идеальной""" библиотеке для форм запилю такую возможность.


from
13.10.2017
16:07:50

Юра
13.10.2017
16:08:31

from
13.10.2017
16:08:41
да и вообще из хока сделать компонент с рендер-пропсом легко

andretshurotshka?❄️кде
13.10.2017
16:09:12

Andrey
13.10.2017
16:09:26
@ZeroBias Бань вадима

Алексей
13.10.2017
16:10:02
recompact
Кстати, вроде бы его когда-то находил

from
13.10.2017
16:10:02

Google

Anatolii
13.10.2017
16:12:48
Может кто объяснить разницу работы проимисов с await и через then?
1) const response = await fetch(...)
const { errors, data } = await response.json();
return { errors, data }
2) fetch(...).then(data=>).errors(...)

Igor
13.10.2017
16:13:18
вроде никакой - первый вариант разворачивается в тот же промис

from
13.10.2017
16:13:23

Andrey
13.10.2017
16:13:30
Дополню вопрос. Почему надо писать await data.json()?

from
13.10.2017
16:13:31
задай вопрос точнее

Andrey
13.10.2017
16:14:02

Anatolii
13.10.2017
16:14:06

from
13.10.2017
16:14:12

Anatolii
13.10.2017
16:14:36

from
13.10.2017
16:15:02
await
синтаксис более удобный по мнению части людей
(иными словами большинства)

Anatolii
13.10.2017
16:15:29

from
13.10.2017
16:16:11
по сути да
но это не "и только", это даёт способы вообще многое по-другому записать

Anatolii
13.10.2017
16:16:36

Vsevolod
13.10.2017
16:23:08
Всем привет
кто сможет помочь по реакту?
https://codepen.io/vsevolodkurochka/pen/KXxvbb
Работает только первый селект и то не правильно, не могу понять в чем проблема