
Vladimir
15.12.2016
13:05:18
А как вообще устроен механизм, когда экшены отправляются по сокету на сервер и с сервера диспатчатся?

Котяй Негодяй
15.12.2016
13:06:19
Пока что только одна проблема.

Alexey
15.12.2016
13:07:41

Google

Котяй Негодяй
15.12.2016
13:07:49
То есть, по сути, серверу доступен dispatch().

Vladimir
15.12.2016
13:12:30
ну вот сам код, который обрабатывает событие из сокета на клиенте и диспатчит action, кажется, что туда же можно добавить какую-то логику, что если с сервера пришел определенный action, помимо него диспатчить еще один

Дмитрий
15.12.2016
13:13:27

Котяй Негодяй
15.12.2016
13:14:26
Чтобы было понятно, вот связка с сокетом на сервере:
const onAction = () =>
async (
socket,
dispatch,
{
type: actionType,
...actionData
},
) => {
const action = actions[actionType];
try {
if (action) {
await action({
data: actionData,
dispatch,
socket,
});
} else throw new NoActionError(`Отсутсвует экшн ${actionType}`);
} catch (e) {
dispatch(requestReject(e));
}
};
const onConnect = (socket) => {
const dispatch = action => socket.emit('action', action);
socket.on('action', data => onAction(socket, dispatch, data));
};


Дмитрий
15.12.2016
13:18:31

Alexey
15.12.2016
13:18:54

Котяй Негодяй
15.12.2016
13:19:18
Магическая неведомая фигня?

Дмитрий
15.12.2016
13:19:52
Ну просто сам редукс действует поперек привычных подходов

Котяй Негодяй
15.12.2016
13:20:11
Это да.

Google

Дмитрий
15.12.2016
13:20:23
Короче, разрыв шаблона — это норма ?
Я как раз ту ссылку что ты скинул и вкуривал. Но на английском там сейчас уже побольше информации, емнип

Vladimir
15.12.2016
13:26:11


Котяй Негодяй
15.12.2016
13:30:10
Ну, короч. Сервер отправляет вот это:
{ type: 'AUTH_OK',
token: '9834t34g9ry3498u',
id: 3231,
login: 'user1', }
И самое первое место на фронтенде, где я могу на это среагировать, — редьюсер. А в редьюсере нельзя вызывать экшны. А суть в том, что по данным от AUTH_OK я отображаю определённый интерфейс, одновременно вызывая:
{ type: 'SERVER_REQUEST_REPORTS' }
Т.е. всё, что нужно, — иметь возможность подписаться конкретно на AUTH_OK вне редьюсера.
И такая возможность потребуется, в том числе, в слуячае использования Hunk.

Vladimir
15.12.2016
13:32:14
> И самое первое место на фронтенде, где я могу на это среагировать, — редьюсер
думаю, можно еще в middleware раньше редьюсера

Котяй Негодяй
15.12.2016
13:32:39
А... Ну, да.
Писать свой middleware? =)

Владислав
15.12.2016
13:36:57
не забудь выложить на гитхаб, поставим лойс

Alexey
15.12.2016
13:37:29
заодно про NPM не забудь

Котяй Негодяй
15.12.2016
13:38:04
Я, ваще-та, не горю желанием это делать. Шутники.

n0z3r0
15.12.2016
13:38:08
package.json
:)

Alexey
15.12.2016
13:39:13
другого способа читать экшны в редаксе у тебя нет, скажи спасибо автору идеи "нахуй диспатчер"

Владислав
15.12.2016
13:40:29

n0z3r0
15.12.2016
13:43:37
Народ как вы поступаете в случае когда у вас несколько табов, на каждой форма и в каждой форме получается есть Typeahead в котром вписывают значения и им выводится список. Как тут лучше организовать передачу данных?

Котяй Негодяй
15.12.2016
13:43:56
ты только на митапах такое не говори, а то кто-то и не поймет
Ну, у меня есть вполне конкретная задача, и я уперся в проблему, которую не смог заранее предвидеть (возможно, в силу отсутствия должного опыта в Редаксе, а м.б. и не только в редаксе). На митапах меня поймут — я хочу сделать так, чтобы потом не было мучительно больно.

Владислав
15.12.2016
13:44:19

Alexey
15.12.2016
13:44:44

Google

Alexey
15.12.2016
13:45:01

Котяй Негодяй
15.12.2016
13:45:26

Владислав
15.12.2016
13:45:28

Vladimir
15.12.2016
13:45:46

n0z3r0
15.12.2016
13:45:49
Так так а Store как привязать?

Vladimir
15.12.2016
13:45:57
с собственной продуманной архитектурой приложения

Alexey
15.12.2016
13:46:04
Предложи альтернативу.
все же от задачи зависит. может тебе пока вообще ничего для стейт менеджмента не надо, setState хватит

? ethorz
15.12.2016
13:46:06

n0z3r0
15.12.2016
13:46:09
Через контейнер привязать к конкретной форме?

Alexey
15.12.2016
13:46:16
или можно взять Flux, там нет проблем с чтением экшнов

n0z3r0
15.12.2016
13:46:34
Да я вот заюзад FluxUtils
спасибо ребятам кто посоветовал

n0z3r0
15.12.2016
13:46:53
пусть больше кода чем в редаксе зато меньше головняков

Dreamerinnoise
15.12.2016
13:47:42
>больше кода чем в редаксе
и на редакс ещё катят бочку, мол, дофига boilerplate code

Владислав
15.12.2016
13:47:48
но можно переиспользовать редюсер, например

n0z3r0
15.12.2016
13:48:19
Да совершенно верно, у меня несколько экзепляров одной и тойже формы

Dmitry
15.12.2016
13:48:27
Ну, короч. Сервер отправляет вот это:
{ type: 'AUTH_OK',
token: '9834t34g9ry3498u',
id: 3231,
login: 'user1', }
И самое первое место на фронтенде, где я могу на это среагировать, — редьюсер. А в редьюсере нельзя вызывать экшны. А суть в том, что по данным от AUTH_OK я отображаю определённый интерфейс, одновременно вызывая:
{ type: 'SERVER_REQUEST_REPORTS' }
Т.е. всё, что нужно, — иметь возможность подписаться конкретно на AUTH_OK вне редьюсера.
у меня подобную логику сага разруливает

n0z3r0
15.12.2016
13:48:59
только данные в каждой свои
получается лучше сделать один Store

Google

n0z3r0
15.12.2016
13:49:20
для хендлинга запроса от каждой формы
и по ID формы складировать данные
так же?

Владислав
15.12.2016
13:50:15
ну да, что-то вроде form -> {ID} -> props

n0z3r0
15.12.2016
13:50:54
Еще есть вопрос
А как вы поступаете с формами
вот к примеру у меня есть одна модель Order в которой дофига полей

Admin
ERROR: S client not available

Владислав
15.12.2016
13:51:29

n0z3r0
15.12.2016
13:51:29
но в форме появляются только 7-10 полей
Да не тут операторская для такси
как быть в этом случае
и у меня Order модель содержит в некоторых свойствах объекты
а с формы нужны только ID и текстовые данные

Владислав
15.12.2016
13:52:22
я пока не понял проблемы

n0z3r0
15.12.2016
13:52:24
стоит ли делать уменьшенную модель для форм

Котяй Негодяй
15.12.2016
13:52:29
не, я про то, что ты не хочешь в опенсорс
Если будет что-то конкретное, может и выложу. Но меня смущает уровень скепсиса и агресси в сообществе. Поэтому я буду преодолевать это только в случае либо большого профита, либо большого альтруизма. А сейчас я копаю и познаю новое.

a
15.12.2016
13:52:37
модель? форма? чето я запутался

Владислав
15.12.2016
13:52:53
если что-то нужно, через селекторы пишу

Google

n0z3r0
15.12.2016
13:53:33
Ясно :) значит урезанную модельку тогда буду добавлять :) спасбо

Владислав
15.12.2016
13:53:36
(возможно, действительно будут)

Котяй Негодяй
15.12.2016
13:54:33

Vladimir
15.12.2016
13:54:34
?

Котяй Негодяй
15.12.2016
13:55:11

n0z3r0
15.12.2016
13:55:18
@user999837 Под формой я понимаю OrderForm компонент
под моделью понимаю объект который получает RAW Json и преобразует его в Immutable.Record

Dmitry
15.12.2016
13:56:13

Владислав
15.12.2016
13:56:14

a
15.12.2016
13:57:09

n0z3r0
15.12.2016
13:57:34
Ну в Store хранятся как Immutable.OrderedMap

Котяй Негодяй
15.12.2016
14:00:42
короче, просто ленивый, как и я
Да не, я пытался. Только сейчас оглядываюсь на проекты и понимаю, что мне уже стыдно за этот код. =) Когда развиваешься быстро и не чувствуешь потолка, старое видение мира быстро становится неактуальным. Поэтому оупенсорс, я считаю, пока рановато. Хотя, есть профит в адекватном и полном фидбеке на твой код, это да. Но тогда, когда ты сам подводишь какие-то итоги.


Дмитрий
15.12.2016
14:03:06
Ну, короч. Сервер отправляет вот это:
{ type: 'AUTH_OK',
token: '9834t34g9ry3498u',
id: 3231,
login: 'user1', }
И самое первое место на фронтенде, где я могу на это среагировать, — редьюсер. А в редьюсере нельзя вызывать экшны. А суть в том, что по данным от AUTH_OK я отображаю определённый интерфейс, одновременно вызывая:
{ type: 'SERVER_REQUEST_REPORTS' }
Т.е. всё, что нужно, — иметь возможность подписаться конкретно на AUTH_OK вне редьюсера.
> И самое первое место на фронтенде, где я могу на это среагировать, — редьюсер.
Экшн на клиенте у тебя разве сам по себе диспатчится?

Котяй Негодяй
15.12.2016
14:05:17
Хм... Нууу... Можно и так.
Чувак, который сейчас удалил сообщение, был стопиццот раз прав.
Но это религиозное преступление, я полагаю?

Aleh
15.12.2016
14:06:11
а что там было?

Дмитрий
15.12.2016
14:06:25

Котяй Негодяй
15.12.2016
14:06:45
а что там было?
О том, что я могу просто взять и вручную подписаться на события сокета.