
Max
22.05.2017
10:19:03
компонент должен работать только с тем что в пропсах приходит

shadowjack
22.05.2017
10:19:42
Те контейнер это адаптер?

Max
22.05.2017
10:19:59
контроллер в терминах MVC
ИМХО

Google

Сергей
22.05.2017
10:20:35
Те контейнер это адаптер?
нет
он сродни контроллеру, имеет хендлеры, имеет данные
прокидывает эти данные и хендлеры в представление, которое умеет просто дергать пропсы

Алексей
22.05.2017
10:20:48
я в mapStateToProps готовлю данные

Max
22.05.2017
10:21:23
и диспатч откуда идет?

Сергей
22.05.2017
10:21:37

Алексей
22.05.2017
10:21:55

Max
22.05.2017
10:22:05
экшны у тебя кто бросает?
компонент?

Алексей
22.05.2017
10:22:18
ага

Max
22.05.2017
10:22:25
нууу
хз
не нравится

Сергей
22.05.2017
10:22:46
компонент?
у тебя обычный компонент знает о существовании ридакса?

Google

shadowjack
22.05.2017
10:23:06
А кто ещё может их бросать?

Max
22.05.2017
10:23:12

Сергей
22.05.2017
10:23:20

shadowjack
22.05.2017
10:23:22
А как он узнает?

Сергей
22.05.2017
10:23:32
А как он узнает?
Кидает пропсы-хендлеры в представление.
Представление уже их дергает.
Представлению по барабану что за хендлеры и как они работают.

Max
22.05.2017
10:23:39
через пропсы

Алексей
22.05.2017
10:23:59
лишний слой какой то)

Сергей
22.05.2017
10:24:14
Это как раз и есть отделение представление от данных)
Всё остальное пыль в глаза

Алексей
22.05.2017
10:24:30
так тут не про данные, а про экшены)

Сергей
22.05.2017
10:24:55
Я не могу реиспользовать в другом месте компонент, который умеет кидать конкретные экшены.
Композицию тоже невозможно использовать в этом случае.

Алексей
22.05.2017
10:25:29
не, он же не знает, какой это экшн, просто колбэк обычный

Сергей
22.05.2017
10:25:35
эм

Алексей
22.05.2017
10:25:43
ты же коннектишь их

Сергей
22.05.2017
10:26:15
Если ты ему через пропсы кидешь коллбек, который он просто дергает, то ок. Это именно то, о чем мы тут с @syabro говорим.
Просто лично мне нехватает mapStateToProps, я юзаю recompose и его многие хоки. Иногда это вырастает в много строк.

Алексей
22.05.2017
10:27:32
просто нет у меня специальных компонент для этого, все в коннекте готовится (исключение это fetch данных при маунте, но это скорее костыль реакт роутера)

Сергей
22.05.2017
10:28:03

Алексей
22.05.2017
10:29:26
тоже неплохо) правда меня не парит иногда extends Component сделать - обертку))

Yeti
22.05.2017
10:29:33
Ребят никто не писал плагин для eslint со своими правилами ? Я их задал в секции rules но eslint их не находит. Есть у кого может пример несложного плагина чтобы как пример использовать?

Max
22.05.2017
10:29:37

Google

Сергей
22.05.2017
10:29:45

Алексей
22.05.2017
10:30:06

Сергей
22.05.2017
10:31:13
a) что такое lifecycle?
b) где хранится enhance
c) как выглядит экспорт енхенсед компонентов
чаще всего enhance, если он маленький хранится в том же файле что и компонент (ибо у меня AtomicDesign, там pages это конечный роут и не переиспользуется)
если enhance нужен для реиспользуемого компонента или же он просто большой, то выношу в директорию enhancers
lifecycle это функция из библиотеки recompose, по сути позволяет навесить lifecycle методы реакта componentWillMount и т.д. не описывая класс

Алексей
22.05.2017
10:31:44
что за enhance?

Сергей
22.05.2017
10:32:11
Вот так

Алексей
22.05.2017
10:33:05
для этого уже спец название есть ?

Сергей
22.05.2017
10:33:08

Max
22.05.2017
10:34:06
а классом?
enhance
точнее НА класс

Сергей
22.05.2017
10:34:29
а классом?
С классом тоже вполне себе прокатит. Просто я предпочитаю функции

Сергей
22.05.2017
10:34:37
https://github.com/acdlite/recompose

Dreamerinnoise
22.05.2017
10:34:56
на класс декоратор бы подошёл т ут

Сергей
22.05.2017
10:35:51

Max
22.05.2017
10:36:54
ты сторибуки юзаешь?

Сергей
22.05.2017
10:37:22

Max
22.05.2017
10:37:25
я с контейнерами так же могу сделать в принципе через HOC
или даже без
через children

Google

Max
22.05.2017
10:37:38
хотя как HOC
или проперти
но у тебя просто нейминг не используется для вью именно
т.е. ты не можешь без енхенса экспортнуть компонент

Filip
22.05.2017
10:38:31
Подумываю юзать

Max
22.05.2017
10:38:45
Например вложенность два уровня это днище
забитый вебпак1

Сергей
22.05.2017
10:38:58

Admin
ERROR: S client not available

Max
22.05.2017
10:39:09

Filip
22.05.2017
10:39:22
Эти оба не фиксятся хотя бы костылями?

Max
22.05.2017
10:39:25
нет
я уже подумываю свое навелосипедить

Filip
22.05.2017
10:39:39
только пару недель как вебпэк обновил

Сергей
22.05.2017
10:39:50
это как?
ну, в компонент-представление, сваливается всё через пропсы сверху, enhance как раз делает сверху контейнер, который пропсами внутрь прокидывает хендлеры и данные

Max
22.05.2017
10:40:28
ну вот смотри
есть компонент <CommentList comments=… onDelete=… onAdd=... />
у тебя енхенсер передает эти вещи

Сергей
22.05.2017
10:41:37
Какого функционала?
Очень нужен был Playground, с живым редактированием примеров. Также хотелось иметь на одной странице компонента, сразу несколько плейграундов.
К тому же указываю у себя какие компонент реюзает компоненты, там при билде все считается и имеются перекрестные ссылки внутри страниц компонентов, что весьма удобно

Google

Сергей
22.05.2017
10:41:44

Max
22.05.2017
10:41:59
а мне надо заюзать их в сторибуке
проперти эти
но енхенсер же свои прокинул

Сергей
22.05.2017
10:42:42

Max
22.05.2017
10:42:49
вот
получается
export CommentList
export const WTF = enhance(…)(CommentList)
приходим к моей проблеме с неймингом WTF
:)

Сергей
22.05.2017
10:43:50
У тебя же есть components, проведи аналогию))
Для себя я нашел отличное решение, работает на ура. В случае стори буков, хз.
Тестировать такое очень легко, реиспользовать тоже.
у меня так:
export const SomeSpecificPage = () => ()
export default enhance(SomeSpecificPage)
Хотя мне кажется лучше было бы SomeSpecific и SomeSpecificPage

Max
22.05.2017
10:46:47
вот нахуй
я говна наелся

Сергей
22.05.2017
10:47:02
а суть не меняется)

Max
22.05.2017
10:47:11
когда дефолтный экспорт юзает то же имя
что и именованный )

Сергей
22.05.2017
10:47:21

Max
22.05.2017
10:47:46
серега, давай в опенсорц

Сергей
22.05.2017
10:48:35

Max
22.05.2017
10:50:59
короче наверное назову
export CommentListComponent
и export const CommentList = enhance()(CommentListComponent)