@react_js

Страница 1103 из 5115
Aleh
21.03.2017
14:09:22
его только в 7 добавили ж

Ҫѐҏӗѫӑ
21.03.2017
14:09:29
нет

https://github.com/babel/babel/commits/7.0/packages/babel-plugin-transform-decorators/src/index.js

ой

Google
Ҫѐҏӗѫӑ
21.03.2017
14:09:44
history кликни

Aleh
21.03.2017
14:09:54
а, да

просто в stage-1 их не юзали

а юзали легаси

а теперь stage-1 свичнули на этот

Ҫѐҏӗѫӑ
21.03.2017
14:13:48
ваще там чуваки пишут, что ждут стейдж 3)

Petr
21.03.2017
15:00:43
@klond90 в редьюсерах вычисляется бизнес логика, которая по большму счёту framework agnistic. Если у тебя в редьюсерах 26мс, то и на angular, и на jquery и на vanila у тебя будут эти 26мс на бизнес логике. Проблема чисто в js функциях твоих, которые бизнес-вычислениями занимаются

фибоначи считаешь?

KlonD90
21.03.2017
15:01:26
у меня 1мс но это уже пиздец

вряд ли оно связано именно с бизнес логикой. а скорее с деелением по сабредьсюмерам и постояннйо сборкой разборкйо и свитчами которых тысячи

Petr
21.03.2017
15:02:36
свитчи - встроенная конструкция JS, даже если их 1000 - это наносекунды

Max
21.03.2017
15:02:46
туда уже чистые данные должны попадать

Google
KlonD90
21.03.2017
15:02:47
я почти наверняка уверен что если вместо 100 редсусеров написать одну функцию развесистый такой свитч

KlonD90
21.03.2017
15:03:34
свитчи - встроенная конструкция JS, даже если их 1000 - это наносекунды
на каждую функцию отдельный контекст. свитч мисает в кэш и становится грустно где-нибудь. на строки скорее всего какие-то оптимизации не врубает

Petr
21.03.2017
15:04:23
> @sergeysova свитчи медленнее else/if если инфа 100%, тогда @klodon пусть на if/else всё перепишет - сравним!

Evgeny
21.03.2017
15:05:43
В принципе логично, да

Max
21.03.2017
15:06:10
у меня редакса по-минимуму щас

я пока к этой тонкой теме не подходил

но есть подозрение что будут сервисы-синглтоны

в которые буду инжектить стор

а они уже будут этой херней заниматься

KlonD90
21.03.2017
15:08:05
в которые буду инжектить стор
а в чем глобальная разница? и зачем редакс в таком подходе лол

Petr
21.03.2017
15:08:07
про моветон в редьюсерах не понял.

Сергей
21.03.2017
15:08:22
> @sergeysova свитчи медленнее else/if если инфа 100%, тогда @klodon пусть на if/else всё перепишет - сравним!
какое-то время назад, я видел бенчи и запускал их, было даже объяснение почему так. Сейчас возможно всё очень ускорили но мне противно писать свитчи и else/if для редюсера

Max
21.03.2017
15:08:37
про моветон в редьюсерах не понял.
везде пишут что редюсер это чистая функция должна быть

Petr
21.03.2017
15:09:01
бизнес логика - тоже чистая функция! получил данные, посчитал, вернул

Max
21.03.2017
15:09:01
соответственно никакой логики

Evgeny
21.03.2017
15:09:24
Я вообще handleActions использую из redux-actions

Google
Max
21.03.2017
15:09:25
если что-то получил, посчитал, вернул то да

Evgeny
21.03.2017
15:09:35


Max
21.03.2017
15:09:38
если куда-то дальше обращается, то уже нет

Evgeny
21.03.2017
15:09:40
Адекватнее же выглядит

Сергей
21.03.2017
15:09:49
точно так делаю!

Evgeny
21.03.2017
15:09:52
Чем свитчи-хуитчи

Дмитрий
21.03.2017
15:10:05
Во во)

Petr
21.03.2017
15:10:08
куда-то обращаться - это сайд-эффекты, они безусловно вне редьюсеров должны происходить.

Сергей
21.03.2017
15:10:14
только функция немного другая, префикс дописывает

Pavel
21.03.2017
15:10:17


Max
21.03.2017
15:10:29
вот

лукапы быстрее )

Дмитрий
21.03.2017
15:10:47
А я у себя посмотрел - большая часть времени, занимаемого диспатчем все равно тратится на апдейт реакта

Mikhail
21.03.2017
15:10:51
всяко

Petr
21.03.2017
15:11:29
мда, таблица сравнения производительности ещё раз доказала, что дело не в самой конструкции swtich/case

Сергей
21.03.2017
15:11:36
я кстати брал старый проект, на 0.13 версии Реакта, с дохренище сложным UI и тучей компонентов и посмотрел перфоманс вот хуже всего работает реакт, хотя мы там выжимали что могли

Petr
21.03.2017
15:11:40
разница +/-1%

Mikhail
21.03.2017
15:12:00
разница есть

if/switch занимет код, а значит ВМ, а занчит память

лукап динамичен, и скорость выше, парсер не пашет

Google
Petr
21.03.2017
15:13:27
далее посмотрим на абсолютные цифры: миллиард операций в секунду. У @klond90 1000 switch/case - это 1мс от которой +/-1% можно сэкономить

Влад
21.03.2017
15:13:33
В каком лучше месте нормализовать данные которые пришли после запроса? Прямо в редьюсере?

Mikhail
21.03.2017
15:14:09
ну и как говорят опологеты, каждый if увеличивает сложность приложения в 2 раза ))

Влад
21.03.2017
15:14:19
Или мидлвэйр запилить?

Petr
21.03.2017
15:14:38
чтобы найти тормоза, надо js код логики редьюсеров смотреть, а не swith/case менять на if/else или lookup

Pavel
21.03.2017
15:15:37
Сергей
21.03.2017
15:15:46
Petr
21.03.2017
15:15:47
Или мидлвэйр запилить?
Запили мидлвер. Но если по быстрому и без заморочек, можно и в редьюсере

но лучше в actionCreator, да

Admin
ERROR: S client not available

Сергей
21.03.2017
15:16:14
Ни в коем случае не в reducer. Лучше в API или actionCreator.
согласен В редюсере не должно быть никаких операций, максимум выборки

Max
21.03.2017
15:17:10
я вот понимаю стор это репозитарий

т.е. save/load данных из хранилища

побочного говна там быть не должно

Petr
21.03.2017
15:17:29
согласен В редюсере не должно быть никаких операций, максимум выборки
что понимаете под "Операциями"? Насчёт "выборок" - так это же в селекторах (reselect / mapStateToProps)

Влад
21.03.2017
15:19:36
Ещё есть вариант прямо в саге

Pavel
21.03.2017
15:19:45
что понимаете под "Операциями"? Насчёт "выборок" - так это же в селекторах (reselect / mapStateToProps)
Под операция понимаются дополнительные вычисления, которые по максимуму должны быть вынесены в комплексные actionCreator

Влад
21.03.2017
15:19:56
Но вот мне кажется что мидлвэйр получше выглядит

Pavel
21.03.2017
15:20:39
Но вот мне кажется что мидлвэйр получше выглядит
Для нормализации не нужен middleware. Это делается на выходе из API в самом API или в actionCreator. Это стандартный подход

Google
Max
21.03.2017
15:21:27
интересно те кто топит за бизнес-логику в мидлварях — насколько большой опыт разработки вне реакта?

я просто помимо реакта еще на беке пишу

Сергей
21.03.2017
15:23:18
Выборки лучше в реселекте)
если ты кидаешь в экшнкреатор чистые данные, а в стор нужно положить только определенные ключи

Max
21.03.2017
15:23:19
как-то вообще такой подход не могу уложить в голове

Petr
21.03.2017
15:25:24
весьма абстрактное обсуждение получается, кто-то говорит что в редьюсерах не должно быть "операций", кто-то говорит что там не должно быть "побочного говна". Давайте конкретный пример рассмотрим и обсудим: у меня приложение кредитный калькулятор. Пользователь подпинул ползунок "сумма кредита" или ползунок "срок" - возникаются соответсвующие Actions. Надо перемножить кучу коэффициентов, применить какие-то крутые алгоритмы и выдать на экран пользователю "это вам будет стоить X% годовых и в итоге вы переплатите Y руб.". Где бы вы написали весь код умножающий/складывающий/вычисляющий X и Y? Варианты ответов (по мере выполнения в js): A) actionCreator; B) reducer; C) mapStateToProps/reselect ?

Pavel
21.03.2017
15:26:08
(A) пишется комплексный actionCreator с redux-thunk с доступом к store и там все делается

Petr
21.03.2017
15:26:10
в данном примере нет обращения к серверу

Max
21.03.2017
15:26:12
до actionCreator в сервисе

Petr
21.03.2017
15:27:03
кто знает как запилить голосование? Сделайте этот пример через голосование telegramm, пожалуста

Aleh
21.03.2017
15:28:48
миддлвара?
а в чем будет профит от миддлвары?

Pavel
21.03.2017
15:29:42
> до actionCreator в сервисе Тоже вариант при вызове одиночного итогового actionCreator. Но если это делается нарпимер в компоненте, то не лучший вариант. Комплексный actionCreator сработает даже при unmount компонента.

Сергей
21.03.2017
15:30:22
типа: dispatch UPDATE_MONTHS -> middlware calcs -> dispatch UPDATE_CALC_DATA dispatch UPDATE_TOTAL -> middlware calcs -> dispatch UPDATE_CALC_DATA

хотя возможно я несу хуйню

Aleh
21.03.2017
15:30:47
так ну есть функция function calculateCredit(amount, term) возвращает объект Credit с нужными полями, все вычисления там, редьюсер просто вызывает на нужные экшены эту функцию

зачем здесь миддлвара?

Max
21.03.2017
15:31:24
типа: dispatch UPDATE_MONTHS -> middlware calcs -> dispatch UPDATE_CALC_DATA dispatch UPDATE_TOTAL -> middlware calcs -> dispatch UPDATE_CALC_DATA
вот вызов какой-то бизнеслогики через константу выглядит пиздецом если честно

Страница 1103 из 5115