@react_js

Страница 1424 из 5115
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
чтобы пока дебаунс не прошел никто не мог дотянуть свои лапки

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
@sergeysova
Не знаю. Глобалы чаще всего плохо выходят

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 которая нигде не используется

Николай
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
почему у тебя Field знает что такое employer?
потому что там у каждого Field есть логика завязанная на employer

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

Николай
08.06.2017
17:02:19
получается у тебя Field это smart компонент?
ага. Field это Hoc над реальными инпутами

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
раз он HOC зачем ему в пропсы пихать employer?
Это HoC, который принимает конфиг поля в виде { disabled: ({employer}) => //тут логика зависящая от employer }

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
может есть смысл запилить внутри EmployerForm всю эту логику, так сказать построить массив, из которого будет производится рендер полей.
Я попробую. Просто не хотелось логику всех держать в одном месте. В итоге получатся макароны. На предыдущем проекте досталась тоже большая форма, в которой всю логику запилили в одном месте. В итоге никто не мог понять как оно работает. Я хочу этого избежать

ладно. щас попробую упростить композицию своих 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
И как правильно это сделать?
имел ввиду типа такого https://codesandbox.io/s/gLxp8r0nr

может есть какие-то hoc'и которые делают что-то похожее...

Oleg ?
08.06.2017
20:13:39
может есть какие-то hoc'и которые делают что-то похожее...
Это прикольно, но работает не правильно

Хотя

Как он это делает?

В чём магия?

code4aman
08.06.2017
20:15:06
что именно? там в cWRP есть debounce.cancel

и между cWRP и onChange (что сначала пишет в стейт) есть флаг this.state.pending

Oleg ?
08.06.2017
20:16:06
Ааа

всё

вижу

Да, классно

Но это костыль

Страница 1424 из 5115