
Nikita
04.12.2016
22:44:08
но и ничего плохого, что из тупого компонента вызывается умный я не вижу)

Dmitry
04.12.2016
22:44:48
Мне кажется, на самом деле, что просто зависит от прошлого опыта и привычек. Каждый свою кашу варит по своему :)

Evgeniy
04.12.2016
22:45:18
То есть есть контейнер из input и ещё чего-то, в зависимости от input меняешь другой компонент
Но например есть react redux form

Google

Nikita
04.12.2016
22:47:24

Evgeniy
04.12.2016
22:47:25
Она сама по себе умная форма связанная с redux

Dmitry
04.12.2016
22:47:39
Да, я немного выше писал

Evgeniy
04.12.2016
22:47:54
И Ее используют в компонентах и все хорошо

Nikita
04.12.2016
22:47:54
а чем контейнер не компонент с стейтом?

Andrew
04.12.2016
22:48:13

Dmitry
04.12.2016
22:48:22
Прям активно локальный стейт у меня использует компонент с кастомным скроллом.

Evgeniy
04.12.2016
22:48:34

Nikita
04.12.2016
22:48:56
а если у компонента свой инстанс редакса?)

Dmitry
04.12.2016
22:49:24
Разница в том, что компонент им пользуется для отображения и никак не связывается с данными.

Evgeniy
04.12.2016
22:49:25
Ну тогда это уже не тупой
И сложно найти что за данные и откуда пришли

Google

Nikita
04.12.2016
22:50:01
а в чем различие тупого и умного тогда?)

Evgeniy
04.12.2016
22:50:09
Тут идея то в удобстве поиска
Если везде сделать connect то потом хрен разберёшься

Nikita
04.12.2016
22:51:13
окай, react-dnd создает умные или тупые компоненты?)
кастомный скролл - умный или тупой?

Dmitry
04.12.2016
22:54:28
У меня есть компонент input, который просто рисует инпут, ему можно передать значение, лейбл, ошибку, отрисовать внутри саджест и умеет рисовать иконку-контрол. Он при этом даже не подозревает о том, в каком приложении он подключен.
Есть контейнер, который привязывает его к данным приложения и делает его инпутом с выбором места отправления, который при заполнении отдает данные для саджеста, заполняется дефолтным значением из редьюсера, по клику на иконку определяет геолокацию.
Есть еще один контейнер, который использует тот же инпут, но уже задизейбленный, по клику только открывает панельку с календарем и когда календарь ему скажет - заполняется выбранным значением.
Примерно такой подход во всем и использую.

Evgeniy
04.12.2016
22:54:33
У меня кастомный скрол конечно тупой

Dmitry
04.12.2016
22:54:44
Кастомный скролл - тупой. Он умеет только скроллить все, что внутрь него положишь.
Даже более того. У меня это 2 компонента: скроллбар и область, которая скроллится, которая инклюдит скроллбар.

Evgeniy
04.12.2016
22:55:46
Согласен
Примерно так и есть
Умный не от того что у него есть внутренний стейт

Nikita
04.12.2016
22:56:12
а если window надо скроллить?

Andrew
04.12.2016
22:56:22
У меня есть компонент input, который просто рисует инпут, ему можно передать значение, лейбл, ошибку, отрисовать внутри саджест и умеет рисовать иконку-контрол. Он при этом даже не подозревает о том, в каком приложении он подключен.
Есть контейнер, который привязывает его к данным приложения и делает его инпутом с выбором места отправления, который при заполнении отдает данные для саджеста, заполняется дефолтным значением из редьюсера, по клику на иконку определяет геолокацию.
Есть еще один контейнер, который использует тот же инпут, но уже задизейбленный, по клику только открывает панельку с календарем и когда календарь ему скажет - заполняется выбранным значением.
Примерно такой подход во всем и использую.
я так и сделал :)

Evgeniy
04.12.2016
22:56:27
А от того что есть связь с редаксом
Он знает о экшенах

Nikita
04.12.2016
22:57:24
ну а react-dnd - тупые компоненты выдает, или умные?)

Evgeniy
04.12.2016
22:57:25
И о стэйте редакса

Dmitry
04.12.2016
22:58:10
Если это просто скролл для всей страницы обычный, то мой компонент с этим справится. Если там просто нужно по скроллу двигать какие-то элементы интерфейса, то можно сделать свой ScrollArea, который будет контроллировать пропсы скроллбара и разруливать кастомную логику.
Сейчас гляну react-dnd )

Google

Andrew
04.12.2016
22:58:18
у меня вот так связь тупого инпута идет с редаксом
handleEvent(e, handlerName, preventDefault = true) {
if (preventDefault) e.preventDefault();
if (typeof this.props[handlerName] === 'function') {
this.props[handlerName]();
}
}

Dmitry
04.12.2016
22:58:24
Но скорее тупой

Andrew
04.12.2016
22:58:42
т.е. я проверяю есть ли нужная функция в пропсах и если есть - вызываю.
если нет - ничего не происходит

Evgeniy
04.12.2016
22:59:57
Ну а причём тут умный компонент?
На первый взгляд обычный компонент который дергает пропсы

Nikita
04.12.2016
23:02:02
кароч, с ваших слов, тупой - это реиспользуемый компонент. Никакого отношения к тому, контейнер ли это - нет.

Pavel
04.12.2016
23:05:05
пацани, если я делаю пакет который представляет собой HOC, мне реакт указывать в peerdeps?

Nikita
04.12.2016
23:05:55
npm 3, указывай в dependencies и не парься

Dmitry
04.12.2016
23:07:52
Ну по сути да, если я хочу реюзабельный контейнер, то делаю из него компонент и дальше где надо - привязываю к данным

Nikita
04.12.2016
23:09:23
ну вот) и не надо про вкладывание умного в тупой рассуждать. Иногда без этого никак)

Nikita
04.12.2016
23:10:20
помимо верстки вполне может быть, что компонент больше одного раза на странице. поиск, например.

Dmitry
04.12.2016
23:10:24
Ну я про это и говорил. Что если нам дать одни и те же реакт компоненты, то мы их просто по разному в папочки положим)
В моем случае контейнеры в принципе могут быть реюзабельными если берут данные из одного фрагмента стора. Ну или если заморочиться и в одном контейнере разруливать несколько вариантов.

Nikita
04.12.2016
23:13:28
а еще всегда можно connect вынести в отдельный файл)
у меня так вообще все контейнеры сделаны

Dmitry
04.12.2016
23:14:49
Как вариант) Я больше люблю внутренности разбивать на отдельные файлики и главный не такой большой получается)

Nikita
04.12.2016
23:17:19
мне connect в основном файле не нравится тем, что появляется 2 основных куска кода
а так, компонент отдельно, коннект и его 2 части отдельно

Kate
04.12.2016
23:26:01
ребятки

Google

Kate
04.12.2016
23:26:08
помогите мне достать покемона
что-то я намудрила с апи
вот что в документации есть
но как его правильно использовать(

Pavel
04.12.2016
23:30:04
sprite/{id}
media/img/{id2}
id !== id2
грубо говоря ты можешь узнать урл картинки из апи

Admin
ERROR: S client not available

Pavel
04.12.2016
23:31:18
но пытаешься получить его сразу, опрокидывая туда не то что нужно

Kate
04.12.2016
23:31:38
я вообще не могу достучаться до этой картинки
даже в браузере не могу найти по урлу

Pavel
04.12.2016
23:32:13
а это что за апи вообще

Kate
04.12.2016
23:32:44
https://pokeapi.co/docsv1/#pokemon

Dmitry
04.12.2016
23:33:47
Be aware: URLs for Sprites have moved permanently! This is due to people abusing them and hot linking. Do not hotlink images.

Pavel
04.12.2016
23:34:24
https://pokeapi.co/api/v1/sprite/12/
тут ты передаешь id покедекса 12, однако картинка в итоге 11.png
https://pokeapi.co/media/img/11.png
сек юрность

Dmitry
04.12.2016
23:37:14
:D

Kate
04.12.2016
23:38:33
Не работает (((

Google

Kate
04.12.2016
23:38:42
Щас погодите
почему у меня такого нет?

Vasiliy
04.12.2016
23:43:02
эм, а где расширение?

Kate
04.12.2016
23:43:28
уже увидела)
ты меня опередил)
вообще никак(

Vasiliy
04.12.2016
23:46:30
просто кликни на эту ссылку, работает?
https://pokeapi.co/media/img/11.png

Kate
04.12.2016
23:47:11
нет(
короче
ну этих покемонов
Как то у меня печально происходит знакомство с реактом ((
Загрузилось
Минута прошла