
Vladimir
29.03.2017
22:58:03
Ну пришел и пришел
Делаешь с ним что нужно

Nikita
29.03.2017
22:58:33
не понимаю твоей логики)

Vladimir
29.03.2017
22:59:01
Зачем тебе приходят апдейты? Чтобы ты их куда то положил

Google

Vladimir
29.03.2017
22:59:05
Ну так положи
Зачем что то фетчить

Nikita
29.03.2017
22:59:13
ты о том, что гарантированно либо юзер прийдет свежий, либо юзер, а за ним апдейт?

Vladimir
29.03.2017
22:59:27
Я просто не совсем понимаю, что в апдейте
Если апдейт - это патч на юзера, то он вообще не нужен

Дмитрий
29.03.2017
22:59:44
Вангую, что тут ещё стейт не нормализованный

Nikita
29.03.2017
22:59:45
инфа о юзере, по которой я за ним могу сходить на сервер

Дмитрий
29.03.2017
22:59:52
раз нельзя просто положить данные по нужному id

Nikita
29.03.2017
22:59:53
а могу не ходить, если он у меня уже есть

Aleh
29.03.2017
23:00:29
а если нету, то заигнорь

Vladimir
29.03.2017
23:00:52
Короче, если речь просто об апдейтах структуры, то пока ты первый раз ее не получил, то и апдейты тебе не нужны
Можно их просто выкидывать, а лучше вообще на них не подписываться

Nikita
29.03.2017
23:07:39
ну ок, список. есть список, есть апдейты, в какой-то момент ты пошел загружать кусок списка, прилетает апдейт, тут есть желание обработать после загрузки чанка.

Google

Nikita
29.03.2017
23:09:11
смысл вообще простой, пока ты делаешь асинхронную операцию, может прилететь какой-то апдейт, надо его отложить до конца этой асинхронной операции
например удаляешь элемент из списка, а сборку прилетает апдейт об изменении этого элемента
Выкидывать такой апдейт нельзя, вдруг удаление сфейлится

Denis
29.03.2017
23:14:30
Никто не знает твоей архитектуры


Дмитрий
29.03.2017
23:41:06
Выкидывать такой апдейт нельзя, вдруг удаление сфейлится
Я тебе уже описал, как стоит действовать) Нужно просто разделять сам факт хранения данных в стейте и их использование.
Пришёл к тебе апдейт, в котором user :: { id: 123, online: true }
Ты просто сохраняешь их в сторе типа как { users: { 123: { online: true } } } и больше ничего, что делать с этими данными - ты потом решишь
Короче, раз ты не выбираешь, когда в какого юзера писать данные, то стор у тебя просто должен быть готов в любой момент записать любые данные в любое поле
Если нужно явно отделить сохраненные данные, то просто клади апдейты в какое-нибудь поле вроде updates
А первоначальное решение неправильно по целому ряду причин. Кроме того, что ломается single point of truth и редюсеры со стейтом просто бессмысленны, ещё и экшны нельзя применять пачкой
На последнее правило как всегда можно обоснованно ответить, что тебе прям очень надо, но, как правило, это просто будет приводить к неконсистентному состоянию в приложении


Ave
30.03.2017
00:53:40
vendor.bundle.js.1 100%[===================>] 12.47M --.-KB/s in 0.09s
это дев, многовато че то, у всех так?

Mike
30.03.2017
03:37:41
Нет

Oleg
30.03.2017
06:13:35
Всем привет!

Nikolay
30.03.2017
06:16:25
привет!

Ramazan
30.03.2017
06:47:25

Denis
30.03.2017
06:48:06

Ostap
30.03.2017
06:48:19
.bind
Или arrow func

Сергей
30.03.2017
06:49:13
чувак ну иди в #noobs и учи матчасть
особенно ту часть, где описан контект вызова функции на объектах

Google

Ostap
30.03.2017
06:49:19
https://medium.com/@housecor/react-binding-patterns-5-approaches-for-handling-this-92c651b5af56

Ramazan
30.03.2017
06:49:43
спасибо

Oleg
30.03.2017
06:53:08

Kirill
30.03.2017
07:20:13
5 моё любимое.

Anton
30.03.2017
07:20:27
Плодить функции в render получается плохо, а плодить функции на каждый инстанс - хорошо :(

Oleg
30.03.2017
07:21:20
не стоит плодить функции сверхнеобходимости ?

Anton
30.03.2017
07:22:07
Нам нужно больше абстракций!

Алексей
30.03.2017
07:27:43

Dmitry
30.03.2017
07:29:05
Привет! Можете подкинуть еще интересных канальчиков (не обязательно рус) по мобильным аппам, реакту, метеору, реакт-нативу, девопсу? буду благодарен )

Anton
30.03.2017
07:29:07
Мне просто интересно насколько пункт 5 со стрелочными функциями больше жрет чем биндинг в конструкторе. Надо посмотреть во что Бабель это превращает.

Сергей
30.03.2017
07:30:50
сорри за скрин)))

Алексей
30.03.2017
07:32:15
хотя в принципе бабелю по идее ничего не мешает сгенерировать код с bind

Anton
30.03.2017
07:33:19
GC передаёт приветы. Hidden classes и вообще компилятор тоже.
С биндом как-то лайтовее будет.

Алексей
30.03.2017
07:33:54
это не критично

Сергей
30.03.2017
07:34:10
оптимизация на спичках?

Anton
30.03.2017
07:34:27
Тут спичка, там списка и привет.

Алексей
30.03.2017
07:34:35
а вот создавать функции в рендере, которы теоретически может вызываться десятки и сотни раз в секунду - не самая лучшая идея

Google

Anton
30.03.2017
07:34:53
На старой работе все такие случае решали передачей контекста для вызова. Никаких биндов не надо даже.

Сергей
30.03.2017
07:35:04
в рендере конечно, а вот в конструкторе bind или замыкание, вообще похеру

Алексей
30.03.2017
07:35:26
именно

Anton
30.03.2017
07:35:33
А, ну да, это же чатик про реакт ;)

Сергей
30.03.2017
07:35:46

Anton
30.03.2017
07:36:09
По сотне тысяч. И выбора то нет.

Admin
ERROR: S client not available

Алексей
30.03.2017
07:36:47
почему нет?

Anton
30.03.2017
07:38:29
Или локальная функция. Или через бинд. Или через call. Apply тормозной.

Алексей
30.03.2017
07:38:48

Anton
30.03.2017
07:39:34
А реакте при всём желании call не заюзаешь.

Алексей
30.03.2017
07:39:38
кстати да, там могут лишние массивы создаваться

Ilya
30.03.2017
08:52:26
Привет!
Коллеги, подскажите один момент.
Ипользую для интернационализации react-intl, в локали en-GB вместо знака рубля валюта отображается как RUB2,000, в ru-RU все окей - 2 000 ₽. Есть ли какой-нибудь способ изменить отображение валюты для локали en-GB на ₽2,000 ?

Сергей
30.03.2017
08:53:56
в en-GB знак рубля должен быть После количества

Ilya
30.03.2017
08:58:47
Насколько я знаю, все верно. Знак валюты в en-GB как и в en-US локалях идет в самом начале.
Вот что Chrome выдает в консоли
Intl.NumberFormat("en-US", { style: 'currency', currency:"RUB", currencyDisplay: "symbol"}).format(12345); // => RUB12,345.00
Intl.NumberFormat("en-GB", { style: 'currency', currency:"RUB", currencyDisplay: "symbol"}).format(12345); // => RUB12,345.00

Сергей
30.03.2017
09:00:16

Denis
30.03.2017
09:01:06
Может каренси поменять ??
Или в гб тоже рубли

Max
30.03.2017
09:01:49
вообще странно

Google

Max
30.03.2017
09:01:57
почему карренси зависит от локали

Denis
30.03.2017
09:02:13
Ну как бы сахар и молоко

Ilya
30.03.2017
09:02:34
каренси не зависит, валюта одна

Max
30.03.2017
09:02:35
на ум приходит только что знака ₽ может быть чисто российским
и за рубежом его не используют

Ilya
30.03.2017
09:03:05
FormattedNumber из react-intl вовзращает такую вот ерунду.

Max
30.03.2017
09:04:23
https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB_%D1%80%D0%BE%D1%81%D1%81%D0%B8%D0%B9%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D1%80%D1%83%D0%B1%D0%BB%D1%8F

Denis
30.03.2017
09:04:59
Еще возможно что нужно подгрузить обе локали

Ilya
30.03.2017
09:05:04

Denis
30.03.2017
09:06:11
https://github.com/yahoo/react-intl/issues/812

Andrey
30.03.2017
09:23:33
Всем привет. Что-то я зашкварился немного, никак не пойму в чем проблема.

Pavel
30.03.2017
09:27:53
Если в проекте используется bootstrap css, можно вель просто подключить css и не юзать react-bootstrap, чтобы не усложнять? Преимуществ у react-bootstrap в этом случае нет же почти, кроме меньшего набора кода?

Andrey
30.03.2017
09:28:59
нет, используется material-ui

Pavel
30.03.2017
09:30:03
у меня вопрос был, а не ответ на твой...

Andrey
30.03.2017
09:30:22
сорри