
Kate
23.12.2016
10:27:47
помогите мне придумать проект где реакт просто необходим

Eugene
23.12.2016
10:28:16
Pomodoro Timer + ToDo сделай:D

Kate
23.12.2016
10:28:42
как вариант)

Sergey
23.12.2016
10:29:23
если "просто необходим" то помодоро таймер и тодо он не нужен

Google

Котяй Негодяй
23.12.2016
10:56:06
Существует ли решение для создания компонента, его интеграции со стейтом приложения и подписки на событие сервера? Я поясню:
Допустим, весь фронтенд получает данные по своей инициативе с сервера только при загрузке и при действии пользователя. В остальных случаях обновления фронтенда происходят по инициативе сервера. Обновления приходят по вебсокетам. Допустим, если у нас отрендерился компонент "Публикация", то его контейнер сразу автоматически подписал стейт на события обновления содержания поста (автор отредактировал, удалил, изменил настройки доступа), лайки и комментарии. Если компонент исчезает со страницы, то стейт отписывается от соответствующих событий. В итоге, мы получаем магию, при которой приложение само контролирует, на что и в какой момент времени оно подписано.


n0z3r0
23.12.2016
10:56:45
В общем народ я решил проблему с ресурсами через настройки Jest moduleNameMapper
никакие хуки не помогли
"jest": {
"bail": true,
"verbose": true,
"testPathDirs": [
"__tests__"
],
"moduleNameMapper": {
"\\.(css|less)$": "identity-obj-proxy",
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$":
"<rootDir>/fileTransformer.js"
}
},
вот так вот получилось
Это нужно, в package.json прописать


Adel
23.12.2016
11:03:42
Существует ли решение для создания компонента, его интеграции со стейтом приложения и подписки на событие сервера? Я поясню:
Допустим, весь фронтенд получает данные по своей инициативе с сервера только при загрузке и при действии пользователя. В остальных случаях обновления фронтенда происходят по инициативе сервера. Обновления приходят по вебсокетам. Допустим, если у нас отрендерился компонент "Публикация", то его контейнер сразу автоматически подписал стейт на события обновления содержания поста (автор отредактировал, удалил, изменил настройки доступа), лайки и комментарии. Если компонент исчезает со страницы, то стейт отписывается от соответствующих событий. В итоге, мы получаем магию, при которой приложение само контролирует, на что и в какой момент времени оно подписано.
звучит как редакс)))

from
23.12.2016
11:03:45
хм, интересно

Котяй Негодяй
23.12.2016
11:04:04

n0z3r0
23.12.2016
11:04:25
Народ а я вот попробовал MobX и заметил что я просто перестаю обращаться к this.state реакта :)))))

from
23.12.2016
11:04:46
что означают значки с "B" возле свойств? При наведении курсора он выдаёт хинт configurable enumerable, что является неправдой)

Adel
23.12.2016
11:04:54
Это может быть и с редаксом, и без.
ну по сути тебе нужен какой-то делегат в контейнере, который позволит подписаться-отписаться от вебсокета на маунт-анмаунт, или я тебя неправильно понял?

Котяй Негодяй
23.12.2016
11:06:38
звучит как редакс)))
Суть в том, что при рендере компонента серверу посылается событие socket.emit('subscribe', { toWhat }), а при уничтожении — socket.emit('unsubscribe', { fromWhat }).

Google

Котяй Негодяй
23.12.2016
11:06:57
Дадада.
Может есть уже велик?

Adel
23.12.2016
11:07:34
вопрос в том, как в реакте делать делегатов? через контекст, хотя можно и без него обойтись

Котяй Негодяй
23.12.2016
11:07:57

Adel
23.12.2016
11:07:57
просто сделать unrenderable component, и включать его в каждый нужный тебе контейнер
мне кажется, тебе лучше самому такое написать
я не встречал готовых велосипедов (хотя я и не смотрел специально)

Котяй Негодяй
23.12.2016
11:09:08
Приглашаю мне помочь тем, кто заинтересован. По-идее, это должна быть крутая штука.
Хотя... Здесь больше работы для бэкенда. Оборачивать контейнер — это лишнее. Мы можем просто запрашивать у сервера подписки через экшны.


from
23.12.2016
11:13:38
Существует ли решение для создания компонента, его интеграции со стейтом приложения и подписки на событие сервера? Я поясню:
Допустим, весь фронтенд получает данные по своей инициативе с сервера только при загрузке и при действии пользователя. В остальных случаях обновления фронтенда происходят по инициативе сервера. Обновления приходят по вебсокетам. Допустим, если у нас отрендерился компонент "Публикация", то его контейнер сразу автоматически подписал стейт на события обновления содержания поста (автор отредактировал, удалил, изменил настройки доступа), лайки и комментарии. Если компонент исчезает со страницы, то стейт отписывается от соответствующих событий. В итоге, мы получаем магию, при которой приложение само контролирует, на что и в какой момент времени оно подписано.
по-моему ты просто описал нормальные компоненты-контейнеры
Так и должно быть: компонент появился в доме — подписался. Компонент dismounted — отписался.

Котяй Негодяй
23.12.2016
11:14:49

from
23.12.2016
11:15:53
Вообще правильная архитектура запросов с сервера (на мой взгляд) выглядит не как "раз мы на этой странице, значит нужно запросить такие-то данные", а вот так: "если появился компонент, которому нужны такие-то данные, то только тогда они и запрашиваются (запрос инициализируется компонентом)".

Котяй Негодяй
23.12.2016
11:17:23
а в чем разница?..
В том, что контейнер сам по себе на события сервера не подписывается, а сервер сам по себе не знает, что одному из клиентов вдруг надо быть в курсе о том, какие лайки приходят в данному посту.

from
23.12.2016
11:18:34

Котяй Негодяй
23.12.2016
11:22:52
Короче. У нас есть стейт. Контейнер соединяет его с компонентом. Стейт общается с сервером по вебсокетам. Т.е. серверу приходит каждый диспатч (или не каждый), и сервер сам может диспатчить в стейт (это уже по факту реализовано). Контейнер при монтировании компонента диспатчит в стейт "хочу подписаться на такие-то события", мидлвэр стейта пересылает запрос подписки в сокет-соединение серверу. Клиент подписан. Произошло нужное событие на сервере — событие в сокет клиенту, диспатч в стейт, изменения в стейте, обновление компонента, профит.
Т.е. никаких централизованных персонифицированных механизмов общения с сервером.

Adel
23.12.2016
11:24:46
> Стейт общается с сервером по вебсокетам.
-- через мидлвару или как? имхо это несколько мутное решение

Google

Котяй Негодяй
23.12.2016
11:25:14
А серверу становится доступен диспатч каждого клиента.

Anton
23.12.2016
11:27:22

Котяй Негодяй
23.12.2016
11:29:19
Если сделать такую штуку, то можно создавать отдельные пакеты, содержащие в себе контейнеры и компоненты. Назовём это компонент-криейторы. На входе криейтору мы сообщаем, где находится его редьюсер, и каким экшном подписываться и отписываться.

Anton
23.12.2016
11:29:35
Logux?

Котяй Негодяй
23.12.2016
11:29:54
Logux?
А вот об этом я не слышал.

Дмитрий
23.12.2016
11:31:15

Котяй Негодяй
23.12.2016
11:31:46
Так. Я сейчас понял, что это нужно реализовать на уровне мидлвэра к сокету.
Т.е. возможность задать интерфейс подписки клиента на события сервера, а на сервере — медиатор, через который проходят все события.
Тогда можно экшны редакса привязыватьк командам подписки.

Дмитрий
23.12.2016
11:35:20
Тебе явно нужна уточка возле компьютера))

Котяй Негодяй
23.12.2016
11:35:35
Пардон?

Дмитрий
23.12.2016
11:36:16
Пардон?
https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D1%83%D1%82%D1%91%D0%BD%D0%BA%D0%B0

Котяй Негодяй
23.12.2016
11:37:02
Лол
Ну, наверн.
Не, ну я же правильно сделал, что написал сюда. =)

Vanya
23.12.2016
11:54:37
О, кстати. Пользуясь случаем.
Очень похожая система у нас, как описал Котяй, разве что без веб сокетов, fetch api тянет джейсоны.
Нужно получить некоторые метаданные с сервера, которые будут нужны потом большинству компонент.
Где это лучше вчего сделать?
Без подписки в каждом редьюсере, это как то нарушает DRY

Google

Pavel
23.12.2016
11:56:37
я бы сделал отдельный стор для таких вещей и в момент инициализации какого-то большого контейнера, который эти компоненты охватывает, тянул бы
ну, отдельный кусок стора, в смысле

Vanya
23.12.2016
12:02:23
Да, я понял, идея вполне норм. Я только не очень понимаю, как потом передать эту дату дальше по дереву
Ладно, спасибо, буду копать дальше)

Ruslan
23.12.2016
12:35:15

from
23.12.2016
12:35:43
Boolean?
а, да, похоже :))
хинт всё равно неверный (

Pavel
23.12.2016
12:36:51

Denis
23.12.2016
13:26:38
1. https://ant.design/components/
2. http://dev.office.com/fabric#/components
3. https://react-mdl.github.io/react-mdl/components/
Какие ещё хорошие библиотеки компонентов есть для React сегодня?

Admin
ERROR: S client not available

Dmitry
23.12.2016
13:28:12
http://react-toolbox.com/

Denis
23.12.2016
13:31:11
Норм, есть ещё что-нибудь?

Dmitry
23.12.2016
13:32:20
Если простенькое - http://elemental-ui.com/

Дмитрий
23.12.2016
13:43:02

? ethorz
23.12.2016
13:43:09
чет там хистори даже нет
в элементале
на самом сайте)

Ҫѐҏӗѫӑ
23.12.2016
13:52:10
чо там в графкл?
подписки будут?
@vyorkin наверное сможет поподробнее о впечатлениях рассказать

Google

Denis
23.12.2016
13:53:54

Ҫѐҏӗѫӑ
23.12.2016
13:54:05
но вообще выбирали из-за ts в первую очередь

Denis
23.12.2016
13:54:52
Итого, полный список:
1. https://ant.design/components/
2. http://dev.office.com/fabric#/components
3. https://react-mdl.github.io/react-mdl/components/
4. https://react-toolbox.com/
5. http://elemental-ui.com/
6. http://blueprintjs.com/
7. http://react.semantic-ui.com/introduction/

Ҫѐҏӗѫӑ
23.12.2016
13:55:18
когда жс сдохнет очевидно

Vladimir
23.12.2016
13:55:27
Когда бухать перестанут

Anton
23.12.2016
13:56:12

Denis
23.12.2016
13:56:31

? ethorz
23.12.2016
13:58:27
от мелкософта ничо так

Kate
23.12.2016
14:24:40
подскажите почему может не выводит элементы на страницу?
оно не рендерится(
див пустой(

Таймураз
23.12.2016
14:27:00
Link вместо a используй

Igor
23.12.2016
14:27:16
так там же return после console.log

Kate
23.12.2016
14:27:50

Alexander
23.12.2016
14:28:11
оберни a в ()

Таймураз
23.12.2016
14:28:35
Ах, да
И оберни jsx код внутри map в скобки и на ту же строку, что и return перенеси начало