
Ilnur
13.03.2017
08:42:59
смотри что расшираяешь

Evgeny
13.03.2017
08:43:14
Мобкс потрясный, я смотрю

Ilnur
13.03.2017
08:44:38
это не проблема мобикса, работает он наверно нормально, т.к. не использовал его ни разу

Mikhail
13.03.2017
08:45:45
согласен, он видимо правильно делает

Google

Danil
13.03.2017
08:46:44
А зачем dispatch возвращает action?

Ilnur
13.03.2017
08:49:15
ну или писать так коль душе угодно

Mikhail
13.03.2017
08:50:59
так можно, но я как раз хотел избавиться от этого в конструкторе

Ilnur
13.03.2017
08:54:22
при реализации через прототип ты получишь лапшу еще хлеще

Mikhail
13.03.2017
08:55:24
ну это да, но зато избавляюсь от лишнего оверхеда в конструкторе, так как при создании каждого объекта будет вот это делаться
либо мне по другому надо делать видимо
на сервере сразу рендерить готовые классы

Ilnur
13.03.2017
08:58:28
ну ты же хочешь чтобы обсерв свойств экземпляра класса был уникален и в рамках кода какбы это нормально. Или что, иное нужно?

Алексей
13.03.2017
09:00:53

Mikhail
13.03.2017
09:02:21
я хочу чтобы было так:
но name я хочу добавить в рантайме, но не хочу чтобы это в конструкторе делалось

Google

Алексей
13.03.2017
09:03:20
Ну так сделай. Что тебе мешает?

Mikhail
13.03.2017
09:03:58
Нужно динамически добавить

Алексей
13.03.2017
09:04:25

Mikhail
13.03.2017
09:04:55
Ага, она с сервера едет

Алексей
13.03.2017
09:06:10
Тогда это проблема. Единственное что могу предложить - это оборачивать данные с сервера в observable.

Artur
13.03.2017
09:06:40

Алексей
13.03.2017
09:06:53
const obj = observable(myData);

Mikhail
13.03.2017
09:07:26

Artur
13.03.2017
09:08:08

Mikhail
13.03.2017
09:08:16
я пока вижу только один выход, на сервере генерить готовые классы с декораторами, и тогда все красиво

Алексей
13.03.2017
09:08:18

Artur
13.03.2017
09:08:31

Mikhail
13.03.2017
09:08:36

Алексей
13.03.2017
09:08:44

Ilnur
13.03.2017
09:08:55

Mikhail
13.03.2017
09:09:02

Artur
13.03.2017
09:09:06
Как раз схема на клиенте не известна, с бека приходит и я добавляю

Mikhail
13.03.2017
09:09:46
А ты измерял оверхед?
Нет, просто может слишком я сильно об этом думаю, но просто наличие кода создания атрибутов в конструкторе, чутка напрягает

Google

Алексей
13.03.2017
09:09:59

Mikhail
13.03.2017
09:10:23

Алексей
13.03.2017
09:11:06
И кстати, работать с неизвестной схемой не выйдет все равно

Mikhail
13.03.2017
09:11:12
просто думал может есть вариант без конструктора

Алексей
13.03.2017
09:11:45
Хотя нет, можно, но сложно
Если генерировать интерфейс динамически в зависимости от пришедших данных

Ilnur
13.03.2017
09:13:30

Mikhail
13.03.2017
09:13:52
что-то в этом роде

Алексей
13.03.2017
09:14:07

Mikhail
13.03.2017
09:14:15
и кстати странно что нет observable декортора в виде функции

Алексей
13.03.2017
09:14:27

Mikhail
13.03.2017
09:14:29
observer (Class, key, descr)

Mikhail
13.03.2017
09:14:39

Алексей
13.03.2017
09:14:53

Mikhail
13.03.2017
09:15:16
вот она:
но ее экспортят почему-то ((

Алексей
13.03.2017
09:18:11
Можно самому написать такую обертку.

Artur
13.03.2017
09:18:54

Mikhail
13.03.2017
09:20:34
эксе

Google

Mikhail
13.03.2017
09:20:44
в доках не написано потому что это очевидно?

Artur
13.03.2017
09:22:51

Mikhail
13.03.2017
09:24:24

Artur
13.03.2017
09:25:37
Creating observable properties without decorators
Используйте extendObservable

Admin
ERROR: S client not available

Mikhail
13.03.2017
09:26:04
Ну я понял, я так и сделал с самого начала, у меня это уже работает

Artur
13.03.2017
09:26:31
Тогда я не понимаю зачем тебе извращатсья в вызовом сигнатуры декоратора руками

Mikhail
13.03.2017
09:26:33
Просто задумался может можно не в конструкторе делать )
Я тогда могу не трогать классы в которых я добавляю что-то
observable (Foo.prototype, 'name');
вот эта штука работает как надо, но нигде про это не написано
или я извращаюсь? )))

Artur
13.03.2017
09:28:32
Кстати попробуй extendObservable(Foo.prototype, {name: void 0}

Mikhail
13.03.2017
09:29:25
Спасибо большое всем за помощь, очень помогли, много нового узнал. ??

Artur
13.03.2017
09:30:51
ну значит так не будет работать

Mikhail
13.03.2017
09:31:14
вот фидл: https://jsfiddle.net/ugg8eq6s/

Google

Mikhail
13.03.2017
09:31:57
третий аргумент это descriptor


Denis
13.03.2017
10:11:04
Друзья, весна пришла с хорошими новостями! ?
Мы продолжаем встречи, посвященные React.js, новостям и трендам в экосистеме React.js, а также обменом необычным опытом его использования.
Уже на следующей неделе состоится React Moscow Meetup 2, основными темами которого станут: MobX, bem-react-core, PreJSS. Но как всегда, самое интересное и полезное произойдёт за рамками докладов. ;)
Когда: 15 марта, 19:00, Москва
Где: Яндекс, улица Льва Толстого, 16
На этот раз к нам специально прилетает гость из Киева. ✈️
Учитывая вашу обратную связь, в этот раз мы постараемся больше времени уделить конкретным темам и живому общению. Два больших доклада и один короткий доклад в рамках рубрики "Открытый Микрофон".
Готовы выступить с докладом на следующем митапе? Хотите поделиться своим Open Source проектом? Возникли вопросы? Пишите в Telegram: @DenisIzmaylov
? Кроме того, смело пишите в комментариях к этом посту вопросы, которые хотели бы обсудить и ответы на которые хотели бы получить. Попробуем их затронуть. Даже если не сможете быть лично, видеозапись будет.
? Программа:
✅ 19:00 - Сбор и знакомство.
✅ 19:30 - Приветственное слово, дайджест событий, слухи. :)
✅ 19:50 - Как лучше всего использовать React? На сегодняшний день существует множество архитектурных решений - кто-то выбирает Redux, другие пойдут мутировать данные вместе с MobX, а любителям FRP придется по душе Calmm. Но что скрывается за каждым из этих решениями? Какие подводные камни каждый из этих выборов таит? Поговорим о плюсах и минусах различных инструментов для State Management, чтобы вы могли сделать правильный выбор для следующего проекта. Григорий Шехет, ведущий разработчик в Grammarly.
✅ 20:20 - Кофе-брейк, живое общение.
✅ 20:40 - PreJSS: финальная точка в войне CSS-форматов. Небольшой экскурс в JSS с его плюсами и минусами, и примером того, как PreJSS решил эти проблемы. Денис Измайлов, основатель Axept Global.
✅ 20:50 - bem-react-core: что нового? С момента первой презентации на React Moscow Meetup, мы активно потрудились над улучшением bem-react-core. Что нового появилось? Какие перемены произошли? О том, как стало работать ещё быстрей и проще, про авто-тесты и поддержку переводов, сборка для сервера без webpack и ещё кое-что интересное. Сергей Бережной, руководитель отдела разработки поисковых интерфейсов в Яндекс.
✅ 21:30 - Общие Q&A, свободное общение
Регистрируйтесь: https://www.meetup.com/React-Moscow-Meetup/events/238288715/
Друзья, важная НОВОСТЬ! Для того, чтобы попасть на митап - необходима только регистрация на странице мероприятия на сайте Яндекса.
Для гостей, которые не зарегистрировались на мероприятие по ссылке ниже, Яндекс оставляет за собой право ОТКАЗАТЬ в проходе на мероприятие. Регистрация на Meetup для конкретно этого митапа не имеет значения.
Регистрируйтесь здесь:
+ https://events.yandex.ru/events/yagosti/15-march-2017/


Danil
13.03.2017
11:02:22
Подскажите пожалуйста зачем dispatch возвращает action

Алексей
13.03.2017
11:03:44
он вроде не только action может возвращать. а например промис

Dreamerinnoise
13.03.2017
11:03:50

Yan
13.03.2017
11:03:52
в редюсеры прокидывает вроде а не просто возвращает

Алексей
13.03.2017
11:05:55
если dispatch возвращает промис, то можно например сделать что-то с этим промисом:
dispatch(myAsyncAction()).then(() => { ... });
можно например обновить локальный стейт компонента

Danil
13.03.2017
11:07:32
А зачем там такие строки
let currentListeners = [];
let nextListeners = currentListeners;
Это в исходниках createStore

Igor
13.03.2017
11:09:25
покажи исходники :)

Алексей
13.03.2017
11:09:42
ну массив слушателей нужен для поддержки множества различных слушателей (внезапно, да?), например, если много раз subscribe вызвать с разными функциями

Danil
13.03.2017
11:11:10
https://github.com/reactjs/redux/blob/master/src/createStore.js

Алексей
13.03.2017
11:13:31
похоже массив слушателей иммутабельным сделали
function ensureCanMutateNextListeners() {
if (nextListeners === currentListeners) {
nextListeners = currentListeners.slice()
}
}
а зачем вообще лезть в кишки редакса?

Danil
13.03.2017
11:19:13
Чтобы понимать как он работает и чтобы найти пробелы в знаниях js