
Max
21.03.2017
15:31:54
видел

Aleh
21.03.2017
15:31:57

Max
21.03.2017
15:31:59
не хочу, спасибо
окей

Google

Max
21.03.2017
15:32:13
чем хуев вариант с SomeService(state).doSomething()
где doSomething кинет action?

Сергей
21.03.2017
15:32:25
не хочу, спасибо
я не претендую на правильность
предложил способ, которым сам пользовался

Max
21.03.2017
15:32:29
я понимаю
пытаюсь разобраться
без подъебов
сорян

Сергей
21.03.2017
15:33:03

Pavel
21.03.2017
15:33:06
какой флоу?
До окончания расчетов у вас встанет вся работа reducer-ов и последующих dispatch. Если вы делаете вычисления в actionCreator то вы не останавливаете redux flow

Max
21.03.2017
15:33:10
путаю термины постоянно

Aleh
21.03.2017
15:33:23

Max
21.03.2017
15:33:53
окей
data = SomeService.calculate(...)
someAction(data)

Google

Max
21.03.2017
15:33:56
так не?

Алексей
21.03.2017
15:34:15

Max
21.03.2017
15:34:17
ты прав в контексте если сервис в слое доменной логики лежит

Сергей
21.03.2017
15:34:17

Pavel
21.03.2017
15:34:25
и что, что останавливаю?
Если вы считаете этот подход разумным - то пожалуйста. Я предложил вариант, который позволяет этого избежать.

Petr
21.03.2017
15:34:33
Где писать бизнес логику. Рассмотрим пример. Пользователь подвинул ползунок "сумма кредита" или ползунок "срок" - возникают соответсвующие Actions. Надо перемножить кучу коэффициентов, применить какие-то алгоритмы и выдать на экран "это вам будет стоить X%
В функции actionCreator – 5
??????? 42%
В mapStateToProps/reselect – 5
??????? 42%
В обрабочике события внутри React компонента "ползунок" (или в одном из его родителей) – 2
??? 17%
Напишу специальный middleware
▫️ 0%
В reducer (чистая функция вычисляющая новые X и Y)
▫️ 0%
? 12 people voted so far.

Max
21.03.2017
15:34:47
Petr добавь плиз мой вариант

Aleh
21.03.2017
15:34:54
а этого пока что задача не требует

Max
21.03.2017
15:35:10
data = SomeService.calculate(...); someAction(data)

Сергей
21.03.2017
15:35:13

Aleh
21.03.2017
15:35:26

Evgeny
21.03.2017
15:35:26
А зачем ООПшить
Грубо говоря
Это какой-то ангуларвэй у Макса

Max
21.03.2017
15:35:51
Ну это ООП, да

Pavel
21.03.2017
15:35:52

Max
21.03.2017
15:35:57
точнее ДДД

Google

Aleh
21.03.2017
15:35:58
да какое это ооп?)

Max
21.03.2017
15:36:01
вынос бизнес-логики в сервисы

Evgeny
21.03.2017
15:36:09
Да не суть
Смысл?

Aleh
21.03.2017
15:36:12

Max
21.03.2017
15:36:30
Смысл?
в том что у тебя бизнес-логика хранится в отдельном слое, которы легко тестировать и использовать

Aleh
21.03.2017
15:36:38
и не ддд это тем более

Max
21.03.2017
15:36:43

Aleh
21.03.2017
15:36:46
ну да

Max
21.03.2017
15:36:50
пруф?

Aleh
21.03.2017
15:36:59
пруф на что? Где у вас границы аггрегата?

Сергей
21.03.2017
15:37:02

Max
21.03.2017
15:37:34
в ДДД можно без аггрегатов например

Aleh
21.03.2017
15:37:40
лол

Max
21.03.2017
15:37:54
убегаю, вечером продолжим )

Aleh
21.03.2017
15:38:00
окей, жизненный цикл вашей сущности есть или она умирает сразу после выполнения операции?)

Max
21.03.2017
15:38:03
хоть с кем-то за ддд попиздеть можно

Evgeny
21.03.2017
15:38:05
Так я не понял, чем плоха схема
— процессинг данных в экшене и диспатч готовых данных
— редьюсер принимает данные и кладёт в стор

Сергей
21.03.2017
15:39:36

Aleh
21.03.2017
15:39:38
да нет плохих схем, но есть ситуации, где какие-то схемы не работают

Google

Evgeny
21.03.2017
15:39:46
Процессинг можно в хелпер вынести
transformInputValues()/transformOutputValues()
Получает данные, возвращает данные

Сергей
21.03.2017
15:40:47
Самая большая проблема этих сервисов, это определение принадлежности
Если А взаимодействует с Б, куда класть функцию? вот это бесит, поэтому лучше нах эти сервисы

Evgeny
21.03.2017
15:40:47
Чистые функции, епта
Модель хранить как flow definition
Воткнуть babel-typecheck, чтобы в деве в рантайме падало

Pavel
21.03.2017
15:41:42
Ну и простой документ на который давно ссылаются, как acemarke, так и другие люди на рубеже redux: https://github.com/reactjs/redux/issues/1171

Evgeny
21.03.2017
15:41:44
Что ещё нужно?

Admin
ERROR: S client not available

Ҫѐҏӗѫӑ
21.03.2017
15:42:30
о декораторах интересная беседа завелась в бабель слаке
чуваки из в8 хотели попробовать заимплементить
оказалось, что в спеке есть не все необходимое

Сергей
21.03.2017
15:43:38

Ҫѐҏӗѫӑ
21.03.2017
15:43:51
https://babeljs.slack.com/archives/C062RC35M/p1490110695759930

Сергей
21.03.2017
15:44:14

Mike
21.03.2017
15:50:55
чуваки, а вот такой вопрос. У меня есть страница, на втором экране две половины. Клик в каждую переводит на свой роут, с анимацией. А именно половина раздвигается вбок, вниз, и превращается в страницу. Вопрос, как беспалева для пользователя первый экран выпилить из дома? то есть чтобы скролла не случилось при выкидывании его внаглую?
отдельный вопрос в том, не перерисует ли мне роутер компонент, если там написано что по урлу / он отрисовывает Main, а по урлу /personal (левая половина например) он отрисовывает Personal

Aleh
21.03.2017
15:50:55

Google

Petr
21.03.2017
15:51:21

Aleh
21.03.2017
15:51:59

Petr
21.03.2017
15:52:28

Max
21.03.2017
15:52:30
Кмк

Aleh
21.03.2017
15:53:05

Дмитрий
21.03.2017
15:53:23
Расчёты можно разнести на несколько тиков и тогда у браузера будет время на интерфейс

Aleh
21.03.2017
15:55:04
А можно просто в воркер вынести

Evgeny
21.03.2017
15:55:04
Давай подробнее

Aleh
21.03.2017
15:55:18
А то timeout ставить это как-то странно

Mike
21.03.2017
15:55:34
чуваки, а вот такой вопрос. У меня есть страница, на втором экране две половины. Клик в каждую переводит на свой роут, с анимацией. А именно половина раздвигается вбок, вниз, и превращается в страницу. Вопрос, как беспалева для пользователя первый экран выпилить из дома? то есть чтобы скролла не случилось при выкидывании его внаглую?
отдельный вопрос в том, не перерисует ли мне роутер компонент, если там написано что по урлу / он отрисовывает Main, а по урлу /personal (левая половина например) он отрисовывает Personal
хотя второй вопрос глупый, да. просто растяну половину на весь экран при componentWillUnmount, а потом новый компонент отрисуется новый, но который так же выглядит. Или мигнет?

Дмитрий
21.03.2017
15:55:36

Aleh
21.03.2017
15:55:52

Petr
21.03.2017
15:56:18
вообще разбить по тикам можно, но кто-то так реально делает?
это ж какой-то ручной геморой

Дмитрий
21.03.2017
15:56:40

Alex
21.03.2017
15:57:03

Aleh
21.03.2017
15:57:03
?

Дмитрий
21.03.2017
15:57:16

Petr
21.03.2017
15:57:36
пока первые расчёты будут идти, пользователь ещё подвинет ползунок и что тогда? запускаем второй "процесс" рассчётов разбитый по тикам, а превый надо теперь как-то остановить... это целый свой планировщик!

Дмитрий
21.03.2017
15:57:56

Evgeny
21.03.2017
15:58:01
Давайте про воркеры подробнее