These are chat archives for dev-ua/reactjs

27th
Aug 2015
Ivan Kurnosov
@zerkms
Aug 27 2015 00:00

нет, оно решает конкретную задачу

В том и проблема, что не решает

Даже если всё было бы так, как я говорил, то гарантии на синхронный код остались бы теми же самыми
как мы имеем сейчас
если бы ты писал тот же самый код, что и сейчас
т.е. для тебя ВООБЩЕ НИЧЕГО не изменилось бы
прям ВООБЩЕ НИЧЕГО
от того, что из обработчика можно было бы отправлять в очередь диспетчеризации сообщение - выиграли бы те, кто этого хотят. Те, кто этим не пользуются - ну они этим не пользуются, им вообще по барабану было бы
Konstantin Tarkus
@koistya
Aug 27 2015 00:03
Кстати, вот ещё пример рутера с нуля + навигация с помощью history
https://gist.github.com/koistya/613c6ef0c7452cca12a1
(более полный пример в react-starter-kit)
Ivan Kurnosov
@zerkms
Aug 27 2015 00:05
@koistya кто будет запускать получение данных когда
Location.listen(location => {
  const component = await routes[location.pathname]();
  ReactDOM.render(component, document.body);
});
отработает?
Konstantin Tarkus
@koistya
Aug 27 2015 00:05
Нет, смотрю..
Vyacheslav Slinko
@vslinko
Aug 27 2015 00:06
я @zerkms
Ivan Kurnosov
@zerkms
Aug 27 2015 00:06

@vslinko

Otherwise, we are getting into a race condition.

Это проблема пользователя

Не нужно решать проблем, которых у меня нет
(у меня нет рэйс кондишнов)
An action queue would not be a bad solution if you have multiple async API calls coming back at the same time.
Konstantin Tarkus
@koistya
Aug 27 2015 00:07
@zerkms получение данных логичнее делать внутри рутреа, другой вопрос, ты можешь на уровне компонента декларативно задать, какие именно данные нужны компоненту (по типу GraphQL, можно свой велосипед) либо на крайний случай в компоненте сделать статическую функцию static fetchData = async () => {...}; а в рутере она будет автоматом вызываться если есть, перед рендерингом.
Ivan Kurnosov
@zerkms
Aug 27 2015 00:07
@koistya это нелогично делать в роутере
потому что роутер не единственный
который меняет состояние рантайма
Vyacheslav Slinko
@vslinko
Aug 27 2015 00:08
ты не единственный потребитель
это хорошее решение, которое не дает стрелять в ногу
Ivan Kurnosov
@zerkms
Aug 27 2015 00:08
и ты закончишь это тем, что часть данных у тебя получает роутер, часть ещё кто-то
Vyacheslav Slinko
@vslinko
Aug 27 2015 00:08
и оно решает именно эту задачу
Konstantin Tarkus
@koistya
Aug 27 2015 00:08
@zerkms можешь поспорить на эту тему с авторами библиотек рутеров (тот же react-router :)
Ivan Kurnosov
@zerkms
Aug 27 2015 00:09
@koistya это бесполезно, если даже такой умный дядька как @vslinko поддерживает эту идею
(с защитой от несуществующих проблем)
наступали же миллион раз уже на грабли, что слишком дофига умные утилиты - плохие, потому что ограничивают там, где не надо
но нет, нужно трёх калек защитить, ограничив таких чотких пацанов как я от того, чтобы нормально разделить ответственности в приложении
Konstantin Tarkus
@koistya
Aug 27 2015 00:10
я тоже не представляю как вообще можно по другому сделать, можно конечно вызывать подгрузку данных внутри componentDidMount() внутри компонента, а на время загрузки показывать Ajax индикатор загрузки
Ivan Kurnosov
@zerkms
Aug 27 2015 00:10
@koistya легко и просто!
message dispatching уже миллион лет назад проблему решил
есть очередь, диспетчер её разгребает
всё, проблемы нет
Konstantin Tarkus
@koistya
Aug 27 2015 00:11
@zerkms нормуль, но это тока для тех компонентов где это допустимое поведение компонента (показ иконки загрузки), в большинстве компонентов такого не должно быть
Ivan Kurnosov
@zerkms
Aug 27 2015 00:11
@koistya а не нужно вообще думать о природе компонентов, это стандартный энтерпрайс паттерн
очередь событий + диспетчер
как ты его юзаешь - твоё дело
Vyacheslav Slinko
@vslinko
Aug 27 2015 00:12
еще раз, зачем тебе флакс?
Ivan Kurnosov
@zerkms
Aug 27 2015 00:12
а сейчас с таким решением у нас:
  1. контекст
  1. вызов диспетчера из компонентов
  1. получение данных из роутера
ящитаю, что мы победили проблему ага

еще раз, зачем тебе флакс?

вопрос поставлен некорректно. претензии к реализациям

моё предложение unidirectional message flow не нарушает
Vyacheslav Slinko
@vslinko
Aug 27 2015 00:13
unidirectional message flow != flux
flux включает unidirectional message flow
Ivan Kurnosov
@zerkms
Aug 27 2015 00:14
Flux is the application architecture that Facebook uses for building client-side web applications. It complements React's composable view components by utilizing a unidirectional data flow. It's more of a pattern rather than a formal framework
кароче это бессмысленно. некоторым людям приемлемо, чтобы их несуществующие проблемы за них решали радикальным путём. а другие некоторые люди этого подхода принципиально не понимают
Vyacheslav Slinko
@vslinko
Aug 27 2015 00:16
принципиально не понимают но продолжают его использовать
Ivan Kurnosov
@zerkms
Aug 27 2015 00:17
потому что альтернатив нет
это разумный компромисс, взять что-то, что практически работает
вместо того, чтобы переписывать всё самому
Vyacheslav Slinko
@vslinko
Aug 27 2015 00:17
сделать форк и закомментить строку? :)
Ivan Kurnosov
@zerkms
Aug 27 2015 00:17
этого недостаточно
в листенерах нет доступа к диспетчеру
Vyacheslav Slinko
@vslinko
Aug 27 2015 00:18
в редуксе да
спокойной ночи
Nik Butenko
@nkbt
Aug 27 2015 00:49
мы вчера переехали на Redux в component-router, что убрало парочку хаков, связанных с флаксовым диспетчером.
компонент-роутер сделан как раз для того, чтобы юзать роутинг на уровне отдельных модулей и компонентов, не затрагивая основное приложение. Либа достаточно маленькая, чтобы ее можно было юзать в UI либах. Есть bower и простейший пример на codepen, если хочется попробовать без лишнего гемора
Пишите вопросы в issue, если что. А то меня не хватает на гиттер в последнее время и я пропускаю много чего
Andrew Gurinovich
@altmind
Aug 27 2015 15:06
ох уж эта маленькая ложь про atom
Roman Pominov
@rpominov
Aug 27 2015 15:07
всего два проекта на реакте значит...
а что в атоме, кстати?
Andrew Gurinovich
@altmind
Aug 27 2015 15:18
там был реакт. от реакта отказались из-за плохой производительности
Sergey Rubanov
@chicoxyzzy
Aug 27 2015 15:55

всего два проекта на реакте значит…

XD

Sergey Rubanov
@chicoxyzzy
Aug 27 2015 17:10
кстати, по исходникам fb видно, что там очень немного на реакте
там на нем именно отдельные виджеты
лента вроде как не на нем. по крайней мере не вижу там ни одного data-reactid
Андрей Листочкин (Andrey Listochkin)
@listochkin
Aug 27 2015 17:14
была на нем
Sergey Rubanov
@chicoxyzzy
Aug 27 2015 17:14
на нем чат и часть менюшек
Illia Seheda
@ALF-er
Aug 27 2015 17:15
Вроде весь раздел создания рекламных компаний на Реакте
Что-то было про раздел Аналитики и раздел с играми
Sergey Rubanov
@chicoxyzzy
Aug 27 2015 17:16
ну я вот на главной смотрю
еще там забавные атрибуты в хтмл бывают
data-testid="left_nav_section_ПРИЛОЖЕНИЯ"
Андрей Листочкин (Andrey Listochkin)
@listochkin
Aug 27 2015 17:19
а data-cursor и data-dedupekey - эо не Реакт?
Sergey Rubanov
@chicoxyzzy
Aug 27 2015 17:20
нет
только data-reactid реакт
ну и жквери детектед (хотя кто бы сомневался)
<input type="text" class="inputtext" maxlength="100" aria-label="Поиск" accesskey="/" id="q" name="q" onclick="var q = $(&quot;q&quot;);if (q.value == q.getAttribute(&quot;placeholder&quot;)) {q.focus(); return false;}" placeholder="Ищите людей, места или предметы" autocomplete="off" tabindex="" onfocus="$(&quot;search_first_focus&quot;).value = $(&quot;search_first_focus&quot;).value || +new Date();run_with(this, [&quot;SearchBootloader&quot;], function() {});" aria-autocomplete="list" aria-expanded="false" aria-owns="typeahead_list_u_0_3" aria-haspopup="true" role="combobox" spellcheck="false">
строка поиска
короче fb как был говно, так и остался
Sergey Rubanov
@chicoxyzzy
Aug 27 2015 17:25
(соцсеть, не компания)
Sergey Rubanov
@chicoxyzzy
Aug 27 2015 17:31
ну у некоторых и такого нет (мейл.ру, я смотрю на тебя) :trollface:
Андрей Листочкин (Andrey Listochkin)
@listochkin
Aug 27 2015 17:39
короче, нашел. Никто не говорил, что ньюсфид на Реакте работает, просто был пост о том, как Ньюсфид можно сделать на React и Relay https://facebook.github.io/react/blog/2015/03/19/building-the-facebook-news-feed-with-relay.html
Oleg Kislitsyn
@olegafx
Aug 27 2015 21:53
У okcupid :cupid: некоторые страницы на React :smile: