@react_js
React — русскоговорящее сообщество

Обсуждаем React.js и экосистему. См. также: @reactnative_ru, @apollo_ru, @protonnative_ru, @nodejs_ru, @js_ru, @uiux_ru Вакансии и поиск работы: @javascript_jobs Правила: http://bit.ly/our_etiquette Sponsored with ❤️ by www.axept.co

5822 members

Архив канала @react_js 19 апреля 2016 г.

02:04:18 ДП
User 4627228
Ага, Relay 😈
02:07:59 ДП
User 12791
написал FFI модуль на Rust. не спасло... оверхед большой на гоняние данных из нэйтива в node :)
07:25:02 ДП
User 171026916
Привет
07:25:29 ДП
User 171026916
Как красивее всего удалит свойство из объекта по ключу?
07:26:36 ДП
07:26:37 ДП
User 1245357
var obj = {
     val: 1     
 };
 obj.val = undefined;
07:26:58 ДП
User 23384802
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/delete
developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/delete
Оператор delete удаляет свойство из объекта.
07:27:03 ДП
User 164450058
я бы не сказал что это удаление
07:27:09 ДП
User 1245357
delete тормозной
07:27:28 ДП
User 1245357
я бы показал вам jsperf, но он не работает
07:27:42 ДП
User 23384802
delete object.key;
07:27:47 ДП
User 23384802
красивее не найти)
07:28:03 ДП
User 23384802
ну, я не думаю, что ему надо удалить 20 тысяч ключей
07:28:07 ДП
User 23384802
за секунду)
07:29:34 ДП
User 171026916
Спасибо. В поисках красоты совсем забыл про delete
07:31:47 ДП
User 6936842
https://jsbench.github.io/#78e5b999c39a11837e32b0635de581cc
07:32:08 ДП
User 6936842
ну да, экономия такая никому не нужна)
07:35:45 ДП
User 164450058
Вы забываете, что obj.val = undefined не удаляет свойство. Оно остается итерируемым. Просто присваиваете значение undefined
07:35:53 ДП
User 171026916
Добавляю элементы html после загрузки страницы. Как повесить обработчик на вновь добавленные элементы?
07:35:55 ДП
User 164450058
Потом не споткнитесь только
07:37:08 ДП
User 164450058
Наверное только путем отписки и повторной подписки
07:37:59 ДП
User 3412850
User 171026916
Добавляю элементы html после загрузки страницы. Как повесить обработчик на вновь добавленные элементы?
Event delegation. Ставь обработчик на родителя.
07:51:57 ДП
User 171026916
User 3412850
Event delegation. Ставь обработчик на родителя.
Спасибо за наводку
07:57:12 ДП
User 171026916
Получается можно повесить на body и проверять e.target на className, к примеру
07:57:44 ДП
User 171026916
И все обработчики красиво в одном месте без addEventListener
07:58:04 ДП
User 47375937
так реакт и делает напрмер
07:59:45 ДП
User 164450058
круто
07:59:46 ДП
08:00:06 ДП
User 171026916
Формирую так таблицу. Может подскажите как по уму?
08:00:41 ДП
User 171026916
Сори, что тут React нет )))
08:01:33 ДП
User 171026916
Возможно стоит использовать jsx в отрыве от реакта?
08:02:04 ДП
User 164450058
если такого немного, то я предпочитаю не стрелять из пушки по воробьям)
08:02:51 ДП
User 3412850
User 171026916
Формирую так таблицу. Может подскажите как по уму?
Я бы натравил eslint,  и еще говорят что производительнее джоинить массив, а не конкатенировать строки
08:02:51 ДП
User 6936842
и всё летит к чертям, когда cart = null =)
почему не заюзать шаблонизатор какой-нибудь простенький хотя бы?
08:03:04 ДП
User 3412850
User 6936842
и всё летит к чертям, когда cart = null =)
почему не заюзать шаблонизатор какой-нибудь простенький хотя бы?
+
08:04:31 ДП
User 39182759
да норм, отличный способ. Все же если таких мест в коде мало, лучше не тянуть зависимость
08:05:41 ДП
User 164450058
А то выйдет как тут
08:05:43 ДП
User 164450058
https://s3-eu-west-1.amazonaws.com/uploads-eu.hipchat.com/60030/2360982/UXpQe6QH8tyg3W4/IMG_20160418_002334.jpg
s3-eu-west-1.amazonaws.com/uploads-eu.hipchat.com/60030/2360982/UXpQe6QH8tyg3W4/IMG_20160418_002334.jpg
08:07:15 ДП
User 171026916
User 3412850
Я бы натравил eslint,  и еще говорят что производительнее джоинить массив, а не конкатенировать строки
Согласен
08:08:23 ДП
User 171026916
User 6936842
и всё летит к чертям, когда cart = null =)
почему не заюзать шаблонизатор какой-нибудь простенький хотя бы?
С чего бы ему быть null?
08:09:46 ДП
User 6936842
ну мало ли)
08:10:57 ДП
User 164450058
Ну там строка ожидается видимо. Можно в try/catch обернуть этот блок с JSON.parse, поскольку заведомо все равно не ясно валидна ли будет строка
08:11:15 ДП
User 171026916
есть разница как получать localStorage. Если localStorage.getItem('test') будет null, то localStorage['test'] будет уже undefined
08:12:24 ДП
User 171026916
User 164450058
Ну там строка ожидается видимо. Можно в try/catch обернуть этот блок с JSON.parse, поскольку заведомо все равно не ясно валидна ли будет строка
Так по-хорошему надо всегда и везде делать ))
08:14:23 ДП
User 3412850
User 171026916
Так по-хорошему надо всегда и везде делать ))
Всегда оборачивать в try/catch?
08:14:48 ДП
User 164450058
Ну не всегда это уместно. Если ты понимаешь какой тип ты ожидаешь, то достаточно проверить на тип. Но строка, которая не понятно будет ли json, без try/catch может просто вылететь.
08:15:38 ДП
User 171026916
Я так понимаю, что если получаешь данные извне, то надо проверить и бросить исключение если что
08:17:49 ДП
User 164450058
Да, и в идеале, если ты получаешь данные извне и не используешь какой-то библиотеки для этого или даже fetch, то лучше написать свой маленький обработчик ответов, пропускать через него и работать уже с нормальными данными, а не сырыми.
08:18:01 ДП
User 164450058
Непонятно просто из кода откуда вообще этот cart прилетает.
08:24:59 ДП
User 164450058
Он то сломаться может не только если там null. Что угодно, что не сможет стать на выходе объктом. И тогда JSON.parse бросит исключение, который не перехватывается.
08:27:47 ДП
User 171026916
Прилетает из localStorage
08:39:23 ДП
User 108543364
Знатоки редукса, подскажите, норм ли иметь некоторые компоненты со своим стейтом, типа тултипа?
08:40:40 ДП
User 47375937
нормально
08:40:46 ДП
User 1245357
User 108543364
Знатоки редукса, подскажите, норм ли иметь некоторые компоненты со своим стейтом, типа тултипа?
да
08:41:59 ДП
User 108543364
Ок, спс
08:43:04 ДП
User 53722498
Кстати, знатоки redux, кто как решает проблему, когда тебе нужно несколько компонентов одинаковых на странице
08:43:17 ДП
User 4627228
User 3412850
Я бы натравил eslint,  и еще говорят что производительнее джоинить массив, а не конкатенировать строки
Я тут как-то твитил на эту тему:
https://twitter.com/denisizmaylov/status/715266866118266881

Иными словами, сейчас JavaScript слишком быстрый (если мы не берем задачу в реальном времени обрабатывать 25-мегабайтный JSON ;)), чтобы увлекаться такими хаками. Проблема с опытными разработчиками куда острее. Они смогут не понять все эти хаки и будет потеря времени при понимании кода. Плюс его портабельность снижается. Поэтому лучше использовать стандартные (delete, indexOf и тд), пусть VM заботится об оптимизации.
twitter.com/denisizmaylov/status/715266866118266881
Stop using `var a = +b `, `if (~a)` and other JavaScript "hacks". I know - you're experts. But it makes your code heavy to read and migrate.
08:43:33 ДП
User 1245357
User 53722498
Кстати, знатоки redux, кто как решает проблему, когда тебе нужно несколько компонентов одинаковых на странице
а в чем проблема?
08:44:09 ДП
User 53722498
ну у них разные состояния должны быть
08:44:40 ДП
User 3412850
User 4627228
Я тут как-то твитил на эту тему:
https://twitter.com/denisizmaylov/status/715266866118266881

Иными словами, сейчас JavaScript слишком быстрый (если мы не берем задачу в реальном времени обрабатывать 25-мегабайтный JSON ;)), чтобы увлекаться такими хаками. Проблема с опытными разработчиками куда острее. Они смогут не понять все эти хаки и будет потеря времени при понимании кода. Плюс его портабельность снижается. Поэтому лучше использовать стандартные (delete, indexOf и тд), пусть VM заботится об оптимизации.
twitter.com/denisizmaylov/status/715266866118266881
Stop using `var a = +b `, `if (~a)` and other JavaScript "hacks". I know - you're experts. But it makes your code heavy to read and migrate.
Я согласен с упомянутым в твите мнением об указанных хаках, но как это связано с джоином массива и eslint, не понял 😊 джоин массива - хак?
08:44:46 ДП
User 53722498
хранить в state компонента? а какже тогда единый store с редусерами)
08:47:11 ДП
User 53722498
или как-то динамически редусеры создавать... под компонент...
08:47:40 ДП
User 47375937
если компоненты описывают какой то набор ресурсов, то и хранить массив ресурса, и предоставлять каждой сущности свой компонент
08:48:06 ДП
User 53722498
ну к примеру карусель, их несколько на странице
08:48:20 ДП
User 53722498
у каждого компонента есть состояния, такие как позиция текущая
08:48:40 ДП
User 47375937
ну такие вещи лучше в стейте компонента держать
08:49:00 ДП
User 120647221
если их состояния важны для внешних компонентов, то в сторе, если нет – то в стейте компонента
08:49:24 ДП
User 4627228
User 3412850
Я согласен с упомянутым в твите мнением об указанных хаках, но как это связано с джоином массива и eslint, не понял 😊 джоин массива - хак?
Я воспринял твое сообщение, как использовать ['a', 'b'].join('') или ты что-то другое предложил? :)
08:49:31 ДП
User 53722498
ну а как в сторе лучше хранить тогда
08:49:42 ДП
User 3412850
User 4627228
Я воспринял твое сообщение, как использовать ['a', 'b'].join('') или ты что-то другое предложил? :)
Именно это
08:49:58 ДП
User 120647221
вот такой вариант еще есть
08:49:58 ДП
User 120647221
https://twitter.com/dan_abramov/status/716217178731765762
twitter.com/dan_abramov/status/716217178731765762
React Redux tip: you can isolate a complete Redux app into an independent component by creating the store in its constructor.
08:51:06 ДП
User 47375937
User 53722498
ну а как в сторе лучше хранить тогда
скажем данные по ресурсам, которые получают с сервера, например сами картики/ссылки/инфа в той самой карусели, если такие данные используются в нескольких местах, то лучше держать это все в стейте, тогда при обновлении такого набора данных весь аппликэйшен изменит свое состояние
08:53:29 ДП
User 47375937
Кстати, Олег, мне Ренат сказал что мы вместе на конфу ходили, на мэйл.ру, не узнал )
08:53:44 ДП
User 164450058
100 лет жить будет
08:54:01 ДП
User 53722498
Здарова!)
08:54:52 ДП
User 47375937
привет )
08:56:52 ДП
User 309556
https://twitter.com/dan_abramov/status/716217178731765762
twitter.com/dan_abramov/status/716217178731765762
React Redux tip: you can isolate a complete Redux app into an independent component by creating the store in its constructor.
08:56:54 ДП
User 309556
нужно очень хорошо подумать перед тем как это делать. примерно 300 раз
08:57:02 ДП
User 309556
лучше ~3к
08:57:36 ДП
User 309556
а то получится что-то типа сайклжс
08:58:29 ДП
User 309556
только для виджетов такое можно делать
08:58:45 ДП
User 309556
ну по сути виджет — это и так отдельная аппа
09:01:08 ДП
User 120647221
лично мне ни разу не понадобилось в компоненте стор создавать, это диковато, я просто предлагаю варианты
09:01:08 ДП
User 309556
а в конструктор тем более не надо
09:07:24 ДП
09:09:56 ДП
User 309556
проблема обычно не в редюсерах
09:10:10 ДП
User 309556
если проблема в редюсерах, то в них что-то странное
09:12:23 ДП
User 122105125
профилировать надо и смотреть где проблема
09:12:36 ДП
User 122105125
а не гадать
09:12:38 ДП
User 309556
все нужно мерить да
09:13:39 ДП
User 309556
но редюсеры не должны вычислений содержать или чего-то такого. очень странно если вызовы функций со свитчем, из которых 99% должны в дефолт возвращать — проблема
09:14:51 ДП
User 54173658
Я тут проглядел вопрос про "удалить свойство". Если кому то еще интересно, есть Reflect.deleteProperty
09:18:49 ДП
User 39182759
Вообще я тут два года пилю одну довольно большую приложуху, и пока что самый живучий кейс - это разделять условные сторы по страницам. Потому что случаи "изменил что-то на одной странице, должно измениться на другой" - это процента два логики, и большую часть таких случаев решает перефетч данных на компонентдидмаунт
09:20:43 ДП
User 309556
звучит так, как будто это может и не SPA быть)
09:21:13 ДП
User 39182759
Ну вообще любая spa может быть и не spa:)
09:21:28 ДП
09:22:56 ДП
User 39182759
Можно считать, что на большом сайте каждый значащий раздел/страница - это маленькая отдельная spa.
09:23:25 ДП
User 309556
я бы охуел если бы в веб версии телеграма страница перезагружалась после каждого отправленного и еще раз в какое-то время
09:25:24 ДП
User 309556
ну или мои трейдинговые платформы так рефрешились лол
09:25:25 ДП
User 39182759
Ну вот страница сообщений - это spa. А если для открытия менеджер контактов тебе пришлось перезагрузить страницу, ты не особо расстроишься, на самом деле
09:27:45 ДП
User 39182759
При этом на странице контактов тебе данные нужны в другом виде, нежели на странице мессенджера
09:28:49 ДП
User 309556
http://exante-monosnap-2015.s3.amazonaws.com/sr/Telegram_2016-04-19_12-28-25.png
09:28:56 ДП
User 309556
разве?
09:31:11 ДП
User 309556
и разве не ту же проблему фейсбук решал флаксом?
09:31:29 ДП
User 309556
с количеством уведомлений в чатиках
09:32:01 ДП
User 164450058
ладно, это флейм по частным случаям уже
09:32:24 ДП
User 309556
но вообще сторы разделять иногда нужно
09:32:26 ДП
User 4627228
О, Серёг, ты на JSConf Budapest едешь?
09:32:31 ДП
09:33:02 ДП
User 309556
нас толпа едет. даже несколько. из мск, спб, киева, харькова, берлина
09:34:09 ДП
User 309556
и и на reactconf eu еду
09:35:07 ДП
User 309556
вот в париж уже один судя по всему(
09:36:30 ДП
User 4627228
А кто ещё в Будапешт из местных едет?
09:38:00 ДП
User 62431041
Опа, я буду в Будапеште с 7 по 14:)
09:40:16 ДП
User 309556
Слава Слинько, Миша Башкиров будут
09:40:43 ДП
User 309556
там еще народ вчера в jsunderhood отписался
09:41:11 ДП
User 309556
мы сняли на 6 человек квартиру большую возле конфы
09:41:22 ДП
User 309556
на неделю
09:42:49 ДП
User 309556
https://twitter.com/jsunderhood/status/722067382844465153
twitter.com/jsunderhood/status/722067382844465153
Кто едет на #jsconfdb? Я с удовольствием развиртуалюсь и пообщаюсь
09:43:35 ДП
User 4627228
Круто :) Молодцы
11:19:04 ДП
User 4627228
Парни, а что наиболее оптимально для перевода? https://github.com/i18next/react-i18next - вот это лучшее?
github.com/i18next/react-i18next
Internationalization for react done right. Using the i18next i18n ecosystem. - i18next/react-i18next
11:19:30 ДП
User 4627228
Кто уже делал многоязычные приложения, какие проблемы могут быть?)
11:28:27 ДП
User 215373
Костян)
11:28:48 ДП
User 656567
User 4627228
Кто уже делал многоязычные приложения, какие проблемы могут быть?)
Мы react-intl v2 от Yahoo используем. Пока проблема только в сборе строк для перевода в одном месте. Не особо разбирались, потому что в процессе разработки пока
11:31:40 ДП
User 309556
Я юзаю  Intl по старинке
11:32:10 ДП
User 309556
Но react-intl  сейчас уже давно исправился
11:32:47 ДП
User 309556
Мне просто именно он и плюралы не нужны были. Так бы его взял
11:34:16 ДП
User 309556
А так свои утилзы на 5 строк с вот этим https://github.com/chicoxyzzy/i18n-tag и Intl полифилл
github.com/chicoxyzzy/i18n-tag
i18n-tag - Simple i18n tagged template strings.
11:34:53 ДП
User 68520717
> Мы react-intl v2 от Yahoo
мы тоже
11:51:20 ДП
User 4627228
Супер
11:51:26 ДП
User 4627228
Гайз вы супер =)
12:01:09 ПП
User 1340580
Ребята, это единственная группа в телеграмчике которую я всю перечитываю :D Вам реально удалось собрать адекватную аудиторию которая не отклоняется от тематики чата.

Спасибо!
12:12:34 ПП
User 77929618
лалка пыщь пыщь
12:12:39 ПП
User 77929618
Извините
12:12:58 ПП
User 3412850
Нет проблем
12:13:07 ПП
User 3412850
Сообщения можно удалять, если ошибся чатиком  😊
12:15:40 ПП
User 68520717
кхм, раньше было нельзя
12:16:03 ПП
User 162236709
давно уже можно
12:16:15 ПП
User 83690375
тест прошел)
12:16:28 ПП
12:16:50 ПП
User 1340580
User 68520717
кхм, раньше было нельзя
Когда пины завезли вроде в супергруппах сразу стало можно изменять сообщения.
12:17:18 ПП
12:17:44 ПП
User 162236709
User 1340580
Когда пины завезли вроде в супергруппах сразу стало можно изменять сообщения.
лол
12:17:56 ПП
User 162236709
сразу когда супергруппы появились в них можно было
12:18:04 ПП
User 162236709
в каналах еще раньше было
12:18:13 ПП
User 1340580
User 162236709
сразу когда супергруппы появились в них можно было
изменять* ...
12:18:18 ПП
User 162236709
User 1340580
изменять* ...
нет
12:18:34 ПП
User 1340580
User 162236709
нет
Месяц назад, не?
12:18:38 ПП
12:19:03 ПП
User 162236709
почему еще раз не уточнишь?
12:19:21 ПП
User 1340580
User 162236709
почему еще раз не уточнишь?
Нет :D
12:19:29 ПП
12:19:37 ПП
User 1340580
User 162236709
😱
Держи в себе теперь.
12:20:06 ПП
12:20:20 ПП
12:20:25 ПП
User 162236709
это редактировать
12:21:02 ПП
User 1340580
User 162236709
это редактировать
АЛЛО, я ошибся в сообщении, отредактировал его, потом тебе опять же написал "изменять", и ты все гнешь свою линию с удалить.
12:21:37 ПП
User 162236709
ну не листать же мне и проверять, что ты изменил
извини
12:21:47 ПП
User 1340580
изменять* ...
12:21:47 ПП
12:22:13 ПП
User 162236709
но это логично воспринимать как добавление к моему сообщению
02:07:10 ПП
User 309556
Эх. Мой пропозал не взяли. Их там больше 100 прислали
02:17:25 ПП
02:36:05 ПП
User 309556
Но предлагают все равно прочитать
02:36:13 ПП
02:37:56 ПП
User 309556
Хз на дринкапе читать норм в принципе тоже
02:38:18 ПП
User 309556
Но я бы лучше выпил просто и пообщался )
02:59:47 ПП
02:59:52 ПП
User 57141131
такие дела
03:03:56 ПП
User 196895
User 57141131
такие дела
я так и думал.
03:13:29 ПП
User 162236709
User 57141131
http://www.oed.com/view/Entry/160550?redirectedFrom=redux#eid
oed.com/view/Entry/160550?redirectedFrom=redux
The OED is the definitive record of the English language, featuring 600,000 words, 3 million quotations, and over 1,000 years of English.
04:46:42 ПП
User 1227280
а ни у кого не было задачи хранить контент обогащенный jsx разметкой в базе ?
04:50:25 ПП
User 57648988
User 1227280
а ни у кого не было задачи хранить контент обогащенный jsx разметкой в базе ?
Можно и проще так: markdown -> marked или что-нибудь с кастомным маппингом типа react-markdown -> jsx

А ещё jsx сериализуется в JSON в принципе, правда довольно избыточный, и надо пошаманить чтобы React «авторизовал» его: спецаттрибут добавить.
04:52:05 ПП
User 1227280
> jsx сериализуется в JSON
тоже думаю в направление json'а

а есть какие готовые решения? чтото не могу нагуглить? только erlang овский пакет какой-то попадается
04:53:14 ПП
User 57648988
Можно internal структуры дернуть, но не советую. Лучше кастомный маппинг. Не слышал про готовые пакеты, но задача простая.
04:56:15 ПП
User 4627228
Игорь, а для чего это делать?
04:57:55 ПП
04:58:27 ПП
User 1227280
Чтобы в визуальном редакторе какой-нибудь менеджер мог самостоятельно заполнять контентные поля
04:58:54 ПП
User 1227280
с возможностью интеграции компонентов
05:00:14 ПП
User 4627228
Тогда ведь необходимо ещё маппинг имя=>компонент заводить
05:00:45 ПП
User 1227280
да, помимо тегов нужны компоненты, вот и думаю как делать мапинг
05:00:45 ПП
User 4627228
Это для WYSIWYG ?
05:01:30 ПП
User 1227280
ну визивиг вторая задача, сейчас хотябы в каком-то виде хранить в базе, дальше через пару месяцев может и до него доберусь
05:01:34 ПП
User 4627228
Вот сюда ещё можно глянуть https://facebook.github.io/draft-js/
05:01:41 ПП
User 4627228
когда доберёшься)
05:03:24 ПП
User 4627228
Вообще, идея интересная :)
05:09:53 ПП
User 23384802
User 57141131
такие дела
redux это вроде еще какое-то заболевание неизлечимое)
05:10:04 ПП
User 23384802
удивлялся тогда почему такое название выбрали. Видимо, Дэн не знал)
05:10:29 ПП
User 23384802
хотя может ошибаюсь
05:11:50 ПП
User 23384802
ой, дурак. с reflux спутал вроде
05:12:00 ПП
User 23384802
просто в прошлом много времени и его юзал
05:25:25 ПП
User 1227280
https://www.npmjs.com/package/json2react
нашел примерно то что нужно, может кому-то пригодится
npmjs.com/package/json2react
Creates React components from a JSON structure
05:32:37 ПП
05:38:07 ПП
User 125547436
Вечер добрый, а может кто объяснить такое поведение? А то я голову сломал.
Дело происходит НА СЕРВЕРЕ.

есть дефолтный стейт: 
const defaultState = { sources: [] };

вызывается редюсер:
export default function contentReducer(state = defaultState, action) { ...

далее в редюсере происходит следующее:
const newState = Object.assign({}, state); — создаем копию стейта
...
newState[array].unshift(content); — пехаем в sources некий объект

И в это время изменяется defaultState!!!
05:38:42 ПП
User 125547436
и т.к. он на сервере не создается при каждом запросе, все следующие вызовы редюсера уже с измененным defaultState.
05:39:10 ПП
User 125547436
0_о что за дела вообще такие?
05:42:23 ПП
User 89478045
Коллеги, кто знает библиотечку для ajax запросов, с удобным options интерфейсом для cors запросов?
05:42:36 ПП
User 89478045
User 89478045
Коллеги, кто знает библиотечку для ajax запросов, с удобным options интерфейсом для cors запросов?
На подобии superagent
05:42:52 ПП
User 125547436
https://github.com/mzabriskie/axios
github.com/axios/axios
Promise based HTTP client for the browser and node.js - axios/axios
05:42:52 ПП
05:48:00 ПП
05:50:13 ПП
User 122105125
я смотрю rollup все активнее внедряется в фронтенд сообщество
05:50:15 ПП
User 122105125
https://www.npmjs.com/package/buble
npmjs.com/package/buble
The blazing fast, batteries-included ES2015 compiler
05:51:33 ПП
User 89478045
User 4627228
fetch?
Нормально встанет с поддержкой ie8, с учетом, конечно, полифилов?
05:54:00 ПП
User 4627228
Должен, это почти стандарт) мы CORS не тестили в IE8
05:54:13 ПП
User 4627228
Лёш, а в чем профит?
05:54:55 ПП
User 122105125
Там в ридми лучше посмотреть. Основной посыл, чтобы не настраивать бабел и вебпак
05:55:36 ПП
User 309556
buble и rollup — два совершенно разных проекта
05:55:42 ПП
User 122105125
rollup, как я понимаю, еще один сборщик, а buble — уже аналог настроенного бабеля с пресетом es20015
05:55:45 ПП
User 309556
их придется настраивать-таки вместе
05:55:57 ПП
User 309556
в buble нет ничего про модули
05:56:00 ПП
User 122105125
а так да, самостоятельные проекты от одного автора
05:56:06 ПП
User 309556
и там это написано даже, кстати
05:57:03 ПП
User 122105125
да, он ссылается на производительность в этих случаях
05:57:35 ПП
User 122105125
короче не написал полифил еще :)
06:00:12 ПП
User 125547436
console.log('before', defaultState, state);
const editedState = Object.assign({}, state);
const array = 'sources';
editedState[array].splice(0, 0, action.res.data[array]);
console.log('after', defaultState, state);

—---
before { sources: [] } { sources: [] }
after { sources:  [ Object  ] } { sources:  [ Object ] }

где подвох?
06:01:27 ПП
06:01:31 ПП
User 122105125
> I love Babel: it's an amazing project that has changed how the world writes JavaScript, and I'm in awe of the people who created and maintain it. But it adds overhead and configuration complexity, and so it's not the right tool for every project. Personally, I became frustrated at how much longer my builds took when Babel got involved, and the amount of time it would take to set it up with new projects.
06:02:54 ПП
User 122105125
а почему не unshift?
06:02:58 ПП
User 122105125
зачем splice?
06:03:01 ПП
User 162236709
User 122105125
> I love Babel: it's an amazing project that has changed how the world writes JavaScript, and I'm in awe of the people who created and maintain it. But it adds overhead and configuration complexity, and so it's not the right tool for every project. Personally, I became frustrated at how much longer my builds took when Babel got involved, and the amount of time it would take to set it up with new projects.
с этим согласен
06:03:16 ПП
User 122105125
или concat
06:03:32 ПП
User 125547436
да просто иначе написал. сверху в примере был unshift
06:03:37 ПП
User 125547436
разницы нет
06:03:41 ПП
User 4627228
Тысяча стадартов - это много. Давайте сделаем один универсальный. Сделали. Теперь имеем тысяча и один стандарт. Или как там? :)
06:04:04 ПП
User 162236709
User 162236709
с этим согласен
когда 1-2 часа тратишь на сетап вебпак+бабель+реакт, совсем не круто
для этого взял шаблон теперь, и каждый раз с него начинаю
06:04:07 ПП
User 122105125
@superlaziness а что ожидал? переменные все разные )
06:04:38 ПП
User 125547436
ожидал, что editedState[array].splice(0, 0, action.res.data[array]); не поменяет state и defaultState
06:07:19 ПП
User 122105125
я б в дебаггере прокликал, console.log часто врет
06:08:05 ПП
User 125547436
ну начиналось все не с console.log. Мне редакс стал записывать "глобальный стейт" на сервере. И я пытался разобраться в чем дело.
06:08:16 ПП
User 125547436
оказалось что изменяется defaultState и вот таким образом
06:08:36 ПП
User 4627228
splice это про сайд эффект
06:08:46 ПП
User 4627228
естесственно
06:08:50 ПП
User 125547436
окей пусть будет unshift
06:08:51 ПП
User 122105125
там просто браузер снепы делает и console.log не всегда честно объекты показывает
06:08:53 ПП
06:08:59 ПП
User 125547436
это на сервере
06:09:01 ПП
06:09:07 ПП
User 309556
консоль ленивая просто
06:09:09 ПП
06:09:22 ПП
06:09:48 ПП
User 122105125
а почему через concat не запишешь?
06:09:55 ПП
User 125547436
давай попробую
06:09:57 ПП
User 122105125
мутировать объекты неочень хорошая практика
06:10:28 ПП
User 309556
в ноде вроде не ленивая
06:10:45 ПП
User 62431041
Давно кодинг стримят? :) https://www.twitch.tv/gaearon
06:11:02 ПП
User 162236709
давно
06:11:06 ПП
User 162236709
есть сайт отдельный
06:11:12 ПП
User 309556
нет, но там ничего интересного
06:11:38 ПП
User 162236709
согласен
06:11:39 ПП
User 172831598
и splice и unshift мутируют
06:13:13 ПП
User 125547436
const editedState = Object.assign({}, state);
да, но я не понимаю почему это влияет на state
06:14:37 ПП
06:14:38 ПП
User 122105125
я понял
06:14:44 ПП
User 12791
ну так Object.assign shallow copy делает
06:14:47 ПП
User 122105125
у тебя в ключе ссылка на объект лежит
06:15:00 ПП
User 12791
после чего ты внутрь лезешь и модифицируешь проп
06:15:03 ПП
User 12791
который по референсу
06:15:04 ПП
User 122105125
ты ее присваиваешь новому объекту, а дальше меняешь
06:15:23 ПП
06:16:40 ПП
User 12791
concat делай вместо splice
06:16:49 ПП
User 12791
и реасайнь целиком весь  array
06:16:49 ПП
User 172831598
забудь про мутируюшие операторы и будет тебе счастье
06:17:09 ПП
User 172831598
пока в производительность не упрешся
06:17:15 ПП
User 125547436
да, похоже на то
06:27:47 ПП
User 125547436
Да, супер. Спасибо!
06:56:29 ПП
User 4627228
До тысячи дотянем наш чатик? =)
07:07:04 ПП
User 182495393
Главное качество
07:11:00 ПП
User 4627228
Качество дискуссий здесь на хорошем уровне
07:11:51 ПП
User 182495393
Согласен, и надо постараться сохранить на данном уровне
08:38:05 ПП
User 171026916
При выгрузке книг с GitBook в формате ePub не работает изменение размера шрифта в iBook на Apple devices
08:39:32 ПП
User 171026916
Вопрос по теме, т.к. по этой теме как раз скачал материал) http://m.vk.com/article1762783007_1479325663?api_view=8123c1e507581f881ae08029dad05f&lang=ru
08:40:06 ПП
User 171026916
Эта ссылка лучше https://m.habrahabr.ru/post/279249/
m.habrahabr.ru/post/279249
Закончил работу над парой подробных текстовых туториалов на русском. Постарался уделить как можно больше времени практике. По ходу повествования есть вопросы,...
08:40:58 ПП
User 171026916
Так про шрифт. Что за тема такая с epub из GitBook? У всех так?
08:51:20 ПП
User 182495393
http://stackoverflow.com/questions/36729195/jasmine-spyon-on-reacttestutils-simulate-click-test-is-failed почему не работает?
stackoverflow.com/questions/36729195/jasmine-spyon-on-reacttestutils-simulate-click-test-is-failed
Trying to test React component, using Karma+Jasmine, I'm trying to check that all function into onClick handler is invoked, but the test return false result: `Expected spy reportLoginWithEmail to...
08:57:10 ПП
User 12791
как ты реквайришь файлы?
08:57:20 ПП
User 12791
а. вижу
09:00:16 ПП
User 12791
обычно такие косяки происходят из-за import/require, которые обрубают или пересобирают референсы
09:01:03 ПП
User 12791
проверь что biActions это один и тот же объект в компоненте и в тест файле
09:14:34 ПП
User 182495393
тот же самый
09:15:51 ПП
User 12791
самый простой способ узнать это сделать
09:16:06 ПП
User 12791
console.log(biActions.reportLoginWithEmail.toString())
09:16:20 ПП
User 182495393
так и сделал)
09:16:21 ПП
User 12791
перед biActions.reportLoginWithEmail();  в твоем хенлере
09:16:41 ПП
User 12791
в итоге он мок выплюнул или оригинальную функцию?
09:18:06 ПП
User 182495393
в хендлере не смотрел, сравнивал между тем что в before и в it, счас проверю
09:22:35 ПП
User 182495393
LOG: 'function reportLoginWithEmail() {
        _ActionsDispatcher2['default'].dispatch({
          type: _constantsBIActionTypes2['default'].REPORT_LOGIN_WITH_EMAIL
        });
      }'
LOG: '****signInWithEmail handler******'
LOG: 'function reportLoginWithEmail() {
        _ActionsDispatcher2['default'].dispatch({
          type: _constantsBIActionTypes2['default'].REPORT_LOGIN_WITH_EMAIL
        });
      }'
09:22:43 ПП
User 182495393
LOG: '******it*****'
LOG: 'function () {
        var callData = {
          object: this,
          args: Array.prototype.slice.apply(arguments)
        };

        callTracker.track(callData);
        var returnValue = spyStrategy.exec.apply(this, arguments);
        callData.returnValue = returnValue;

        return returnValue;
      }'
09:23:00 ПП
User 182495393
выглядит нормлаьно
09:23:26 ПП
User 12791
это два разных лога один из теста и другой из хендлера?
09:24:02 ПП
09:24:35 ПП
User 12791
это значит что у тебя две разные функции под одним и тем же именем. Одна оригинальна, другая мок. Ты вызываешь одну, а проверяешь другую
09:25:18 ПП
User 12791
обычно это происходит из-за того тчо референсы пересобираются, но часто оно работает в ноде и браузере (хотя это недокументировано)
09:26:15 ПП
User 12791
попробуй поменять порядко реквайров в тесте следующим образом:
1. require('biactions');
2. spyOn
3. require('SignIn');
09:26:34 ПП
User 12791
но это все очень грязные хаки к сожалению :)
09:27:15 ПП
User 182495393
ок, счас проверю, хотя бы есть нарпавление, спасибо