
Oleg ?
08.06.2017
16:26:45
После того как произойдёт дебоунс текст восстановится

Name
08.06.2017
16:27:12
у тебя там ангуляр что ли?

Oleg ?
08.06.2017
16:27:21
React

Mike
08.06.2017
16:27:50
сделай мьютекс

Google

code4aman
08.06.2017
16:27:55
ну думаю это решаемо, cWP => setState, в debounce чекай стейт

Mike
08.06.2017
16:28:03
чтобы пока дебаунс не прошел никто не мог дотянуть свои лапки

Oleg ?
08.06.2017
16:28:35

Mike
08.06.2017
16:29:16
ну так у тебя асинхронные действия и очевидный рейс кондишн, как ты без мьютекса вообще живешь?)

Oleg ?
08.06.2017
16:29:36
Мьютексы плохо
@ Системный архитектор

Mike
08.06.2017
16:30:19
Системный архитектор значит или идиот или что-то знает, чего не знаем мы

Stepan
08.06.2017
16:30:43
Экшоны можно, наверное, как-то в очередь складывать

Name
08.06.2017
16:31:06
в сагу

Mike
08.06.2017
16:31:51
так пивас говорит экшены медленные слишком

Oleg ?
08.06.2017
16:33:26
Да
debounce хорошая идея, но без мьютексов не рабочая

Google

Oleg ?
08.06.2017
16:34:10
К тому же это неочевидно, как реализовать
Скорее всего я создам Redux для компонентов
Глобальный EventEmitter
В которой будут сыпаться события для общения между компонентами
Что думаете?
@sergeysova

Сергей
08.06.2017
16:37:10

Oleg ?
08.06.2017
16:37:46
Можно реализовать на подобии Redux
Чтобы тоже через HOC

Николай
08.06.2017
16:51:10
Ребят, подскажите.
Есть форма с кучей полей и сложной логикой валидации, доступности и отображаемости полей:
https://gist.github.com/nikolaas/bfe354b58026b06ae185c0c867f18591
Практически в каждом поле требуется employer. Сам employer приходит из редакса. Сейчас сделано так, что employer пробрасывается в каждое поле через свойства. Но мне это не очень нравится, потому что в дальнейшем это тяжело будет поддерживать.
Как правильнее сделать:
1) оставить проброс через свойства
2) завернуть каждое поле в connect и брать employer напрямую из редакса
3) положить employer в контекст формы и в полях вытаскивать его оттуда

Nikolay
08.06.2017
16:58:08
из гиста нихера не понятно что ты хочешь )
в EmployerForm есть переменная FormFields которая нигде не используется

Mike
08.06.2017
17:00:27

Николай
08.06.2017
17:00:45

Кирилл
08.06.2017
17:00:52
а почему не хочешь подключить сам филд к редаксу?

Nikolay
08.06.2017
17:01:00
почему у тебя Field знает что такое employer?

Mike
08.06.2017
17:01:24
Не, я про то, что ты эмплоера можешь через контекст пробрасывать

Николай
08.06.2017
17:01:29

Nikolay
08.06.2017
17:01:46
получается у тебя Field это smart компонент?

Николай
08.06.2017
17:02:19

Google

Николай
08.06.2017
17:02:41

Nikolay
08.06.2017
17:02:51
раз он HOC зачем ему в пропсы пихать employer?

Mike
08.06.2017
17:03:44

Николай
08.06.2017
17:05:51

Nikolay
08.06.2017
17:06:12
ох чето прям попахивает

Pavel
08.06.2017
17:15:13
Вы не можете использовать HOC, как компонент, поэтому это либо не HOC, либо ваш Gist нерабочий

Николай
08.06.2017
17:17:06
В общем каждое поле готовится примерно так
const enhance = pipe(
createEmployerField('INN', 'ИНН'),//HoC который прячет в себе разметку вокрут инпута
withBackendConfiguration('INN'),//HoС, который дополняет параметрами пришедшими с бекенда
withComputableProps({//HoC, который вычисляет динамические свойства
disabled: ({employer}) => employer.status === 0;
})
);
export const INN = enhance(props => (
<FormText
{...props}
validators={{
required
}}
/>
));
потом я использую их
<INN employer={employer}>
но пробрасывать каждый раз employer не удобно.

Pavel
08.06.2017
17:21:34
Если у ва есть необходимое и достаточное количество параметров, для определения в mapStateToProps employee, до withComputedProps, то используйте в композиции connect.
Если employee завязан на internal state, то передавайте props.
Если employee требуется на глубоких уровнях дерева компонента, то используйте context.

Николай
08.06.2017
17:25:17

Pavel
08.06.2017
17:28:02
Можете использовать. Reselect, безусловно connect достаточно комплексный HoC, но даже при 1000 компонентах присоединённых к redux работает все шустро. Думаю у вас в целом есть архитектурная ошибка, в связи с чем появилась такая странная с первого взгляда зависимость.

Николай
08.06.2017
17:31:43
У меня есть объек employer, который я редактирую с помощью этой формы. И логика редактирования зависит от него же
Где мне ее описывать. В самой форме я не хочу этого делать потому что будет дофигища кода в ней
поэтому я попытался как-то разделить логику

Pavel
08.06.2017
17:33:46
Возможно в сторону декомпозиции employee и передачи в Field только нужной информации. Нужно более близко знакомиться с внутренностями

Николай
08.06.2017
17:34:07
на ум пришло только вынести логику каждого поля в отдельное место

Nikolay
08.06.2017
17:42:12
Хорошо. спасибо. буду думать.
может есть смысл запилить внутри EmployerForm всю эту логику, так сказать построить массив, из которого будет производится рендер полей.

Google

Николай
08.06.2017
17:49:34
ладно. щас попробую упростить композицию своих Hoc-ов потом посмотрю что получится

Alexander
08.06.2017
18:42:44
кто-то может помочь? function subscribe(socket) {
return eventChannel(emit => {
socket.on('client message', res => {
emit(addMessage(res))
});
return () => {}
})
} срабативает action addMessage, но он не идет дальше в reducer, почему так?

Max
08.06.2017
18:44:42
А диспатч прописан?

Alexander
08.06.2017
18:47:43
можно пример?
с put все работает, а здесь нет

Max
08.06.2017
18:54:09
addMessage откуда берётся? Мы же про redux да?

Admin
ERROR: S client not available

Alexander
08.06.2017
18:55:20
export function addMessage(message) {
return {type: ADD_MESSAGE, message}
}
action

Max
08.06.2017
18:55:53
MapDispatchToProps есть?
Или просто импортируешь и херачишь?

Alexander
08.06.2017
18:56:30
импортирую и херачу

Max
08.06.2017
18:56:33
Плохо
Нужен @connect

Alexander
08.06.2017
18:56:45
с put работает
в saga

Max
08.06.2017
18:56:58
А, сага
Там своя атмосфера
Я ей не пользуюсь :)

Google

Max
08.06.2017
18:57:51
Но 100% где-то диспатч проебан кмк)

Alexander
08.06.2017
18:58:07
я находил пример с ней
в нем все нормально било
ы
без диспатч

Max
08.06.2017
18:58:56
Тебе виднее)

code4aman
08.06.2017
20:11:54
может есть какие-то hoc'и которые делают что-то похожее...

Oleg ?
08.06.2017
20:13:39
Хотя
Как он это делает?
В чём магия?

code4aman
08.06.2017
20:15:06
что именно? там в cWRP есть debounce.cancel
и между cWRP и onChange (что сначала пишет в стейт) есть флаг this.state.pending

Oleg ?
08.06.2017
20:16:06
Ааа
всё
вижу
Да, классно
Но это костыль