These are chat archives for dev-ua/reactjs

25th
Aug 2015
Eugene Krevenets
@hyzhak
Aug 25 2015 08:12
@ALF-er а есть видео как @ALF-er хорошо со сцены еще его на ОдессаЖС хейтнул ?
Eugene Krevenets
@hyzhak
Aug 25 2015 08:20
Вообще может подскажите, где есть толковый разбор, что хорошо и плохо во всех этих flux-ах? Пока использую родной от Facebook - но он мне кажется уж очень многословным, кто был на Flash сразу вспоминает PureMVC, где для даже для простых вещей нужно создать все эти NotificationName, M, V, C, и тут тоже самое со ActionTypes, State, Component и ActionCreator. - Если ли решение с Convention over configuration, а не явное прописывание всего информационного потока?
Vyacheslav Slinko
@vslinko
Aug 25 2015 08:22
посмотри redux
он не Convention over configuration но менее многословен
Illia Seheda
@ALF-er
Aug 25 2015 08:40
@hyzhak нечего там смотреть в моём докладе =) Скучно и фигню рассказывал. Ещё и презенташка оказалась не последней версии... Хотя отвечать на вопросы мне понравилось
Eugene Krevenets
@hyzhak
Aug 25 2015 08:43
@ALF-er зато люди уже ссылаются :)
@vslinko о спасибо - попробую redux следующим
Alex Afonin
@Tuch
Aug 25 2015 08:52
Парни, подскажите пожалуйста, уже долго мучаюсь. Как быть если очень много actions(делаю некий редактор)? Как их делить по action creators? Больше всего пугают коллизии имен констант:( экземпляр диспетчера один(верно?)
Alex Afonin
@Tuch
Aug 25 2015 09:02
Единственный выход, который я для себя нашел(исключая вариант отдельного диспетчера) это очень долго думать надназванием каждого action:(
И тчательно продумывать каэд сущность:(
Каждую*
Illia Seheda
@ALF-er
Aug 25 2015 09:03
чтоб не было коллизий - вынеси в один файл и объяви как поля одного объекта (или экспорты одного модуля) тогда если ты и объявишь 2 с одинаковым именем, то линтер ругнётся. Ну а вообще, это и есть большая часть "архитектуры приложения"... Нужно сесть и долго думать, рисовать на бумаге. Понимать, что и как у тебя будет происходить в приложении...
Ivan Kurnosov
@zerkms
Aug 25 2015 09:04
Чатик, а напомни, в такой ситуации какие противопоказания против Symbol?
Illia Seheda
@ALF-er
Aug 25 2015 09:04
не серриализуется в строку нормально. Нельзя потом гидрейт/дегидрейт сделать
Ivan Kurnosov
@zerkms
Aug 25 2015 09:06
Ну если знать, что все экшны у нас символы - то можно написать десериализатор нормально
хотя... если юзать Symbol.for() то возникнет ровно та же проблема
Illia Seheda
@ALF-er
Aug 25 2015 09:16
npm outdated говорит, что
Package           Current  Wanted         Latest  Location
react-hot-loader    1.2.9   1.2.9  2.0.0-alpha-2  react-hot-loader
Alex Afonin
@Tuch
Aug 25 2015 09:19
@ALF-er, как всегда спасибо за дельный совет :)
Vladimir Matsola
@vomchik
Aug 25 2015 09:55
ребята, а как бы правильно пропатчить либу, на примере react-select? сделать себе форк? или просто код переместить к себе в проект ?
а то пока приймут PR
долго ждать
Illia Seheda
@ALF-er
Aug 25 2015 09:57
я бы форк сделал... заменить будет проще
кстати, он вроде вчера апдейтнулся, если я ничего не путаю
Vladimir Matsola
@vomchik
Aug 25 2015 09:57
я знаю
но всеравно баг со скролом в хроме остался
Alexey Raspopov
@alexeyraspopov
Aug 25 2015 10:24
rackt/react-router#1728
a new hope
Андрей Листочкин (Andrey Listochkin)
@listochkin
Aug 25 2015 10:34
@alexeyraspopov в чем сыр-бор?
Alexey Raspopov
@alexeyraspopov
Aug 25 2015 10:34
надежда на светлое будущее и нормальное управление роутингом
Андрей Листочкин (Andrey Listochkin)
@listochkin
Aug 25 2015 10:35
“добавляем модульности” - вроде как не объясняет, зачем.
Alexey Raspopov
@alexeyraspopov
Aug 25 2015 10:35
сейчас все делается через жопу и this.context.router
повсюду god object'ы, странные зависимости, etc
Sergey Rubanov
@chicoxyzzy
Aug 25 2015 10:35
context не нужен
Андрей Листочкин (Andrey Listochkin)
@listochkin
Aug 25 2015 10:36
по-моему, пользователям раутера не нужно в this.context.router лазить
Sergey Rubanov
@chicoxyzzy
Aug 25 2015 10:36
вроде нужно
поэтому RR тоже не нужен
Alexey Raspopov
@alexeyraspopov
Aug 25 2015 10:36
если ты хочешь сменить адрес без использования <Link /> — выхода нет
а это говно полное
Андрей Листочкин (Andrey Listochkin)
@listochkin
Aug 25 2015 10:39
да ладно. this.transitionTo и вперед
контекст все равно юзается
Alexey Raspopov
@alexeyraspopov
Aug 25 2015 10:45

this.transitionTo и вперед

извне UI слоя не получиться

а это полная херня
Андрей Листочкин (Andrey Listochkin)
@listochkin
Aug 25 2015 12:21

контекст все равно юзается

мне как потребителю библиотеки все равно.

извне UI слоя не получиться

пф, передать хендлер куда-нибудь в экшене параметром религия не позволяет?

Alexey Raspopov
@alexeyraspopov
Aug 25 2015 12:22

мне как потребителю библиотеки все равно.

вот тебе как потребителю и придется его юзать)

передать хендлер куда-нибудь в экшене параметром религия не позволяет?
  1. не юзаю контекст вообще
  2. у меня две точки реакт рендера, и из одной из них у меня вообще нет доступа к этому контексту роутера
да, религия не позволяет
Sergey Rubanov
@chicoxyzzy
Aug 25 2015 12:23
хендлеры передавать в экшнах — это печаль, да
Terry Sahaidak
@terrysahaidak
Aug 25 2015 15:53
привіт усім)
вирішив розпочати вчити реакт. зіткнувся з деякими проблемами, а точніше з нерозумінням, на яке поки не знайшов пояснення для мене.
поки те, що мене найбільше зараз хвилює:
  1. який найкращий спосіб передавати дані з дочірнього компоненту в батьківський?
  2. яка різниця між refs.something.getDOMNode.value та event.target.value? що краще використовувати?
а також який хороший туторіал по реакт/флакс порадите?
зараз пробую цей: webpack-react
Pavel Forkert
@fxposter
Aug 25 2015 15:54
  1. передавать коллбек в дочерний компонент, который вызовет этот коллбек с нужными данными
  1. если у тебя ровно один элемент к которому добавлено событие - я думаю разницы никакой не будет (разве что тебе УЖЕ пришли данные и зачем их заново вытаскивать через DOM я не очень понимаю)
Terry Sahaidak
@terrysahaidak
Aug 25 2015 15:57
@fxposter
  1. типу сам метод, наприклад, onEdit передавати через props?
  2. часто замічаю в новіших якихось репозиторіях, що юзають друге, а refs в старіших. от і здалось, що колись refs було для того.
Pavel Forkert
@fxposter
Aug 25 2015 15:59
  1. да
  2. думаю нет )
Terry Sahaidak
@terrysahaidak
Aug 25 2015 16:05

а якщо в мене є, наприклад, така структура

<TodoApp>
  <List>
    <TodoItem/>
  </List>
</TodoApp>

state тудушок в мене у головному TodoApp. як мені, наприклад, зробити onDelete зараз? як прокинути через цей середній компонент цей івент?

Pavel Forkert
@fxposter
Aug 25 2015 16:25
если структура именно такая (т.е. у тебя это в шаблоне) - тогда просто пишешь <TodoItem onDelete={} />

если же

<TodoApp>
</TodoApp>

в render-е TodoApp
<List>
</List>
в рендере List
<TodoItem/>
тогда прокидывать через все компоненты
ИЛИ погуглить по “react context"
но я бы наверное не советовал начинать с контекста
Terry Sahaidak
@terrysahaidak
Aug 25 2015 16:28

ну в мене другий випадок, тобто в TodoApp є List, а вже в його рендері є TodoItem
і мене цікавить яким чином найкраще прокинути через всі компоненти
бачив випадок, що треба якось біндити List, щоб воно прокинули в TodoApp, але дуже незрозуміло це було

context важка така штука?

Alex Lunyov
@sunify
Aug 25 2015 16:28

Если для таких простых вещей расчехлять контекст, то очень скоро все накроется медным тазом.

Если рендеринг TodoItem спрятан в List, то в List можно передать onChange, а он уже пусть в TodoItem передает onDelete и т.д.

Pavel Forkert
@fxposter
Aug 25 2015 16:41
контекст не тяжелый, контекст скрывает зависимости. если вы согласны с этим мирится - то можете использовать его.
Terry Sahaidak
@terrysahaidak
Aug 25 2015 17:08
щойно зауважив такий факт, що в коді з туторіала
з аналогічною структурою
onEdit, який накидається на List доступний в TodoItem через this.props.onEdit
тобто дочірнім компонентам доступні props їх батьків?
Pavel Forkert
@fxposter
Aug 25 2015 17:30
по идее нет
это было бы очень странно
Terry Sahaidak
@terrysahaidak
Aug 25 2015 17:51
а, так, там просто помилка була)
а чому в проміжньому компоненті потрібно записувати саме так?
onEdit={this.props.onEdit.bind(null, note.id)}
на скільки я розумію, це можна записати також так:
onEdit={(null, note.id) => this.props.onEdit}
але мені цікаві самі аргументи: навіщо їх передавати? щоб вони були доступні нижче?
Terry Sahaidak
@terrysahaidak
Aug 25 2015 18:07
а нє, не можна так записати
не дуже розумію цю конструкцію, ці біндинги)
Ivan Kurnosov
@zerkms
Aug 25 2015 21:05
На фоне обсуждения гридов 2 дня назад
по итогам неспешного фонового пиления кастомного - выходит что и вправду, лучше когда он просто хорошо компонуется/расширяется, нежели монстр с 100500 параметрами конфигурирования
@chicoxyzzy ^ ^ ^
Надо теперь красиво оформить и продавать лицензии за ярд