169 похожих чатов

При быстром вводе подвисает UI. Чем можно фиксануть? Использовался для

ввода инпута react-redux, react, hook

34 ответов

32 просмотра

не дёргать редакс на onChange. Состояние ввода хранить в локальном стейте, отправлять в редакс когда там эти данные нужны

О еще одна жертва присела на бутылку редакса)

на бутылку неправильного использования редакса

Artyom-Burkan Автор вопроса

В redux хранится всё состояние контрола: ошибки, статус и т.д. Они должны быть видны всему приложению. Может как-то асинхронно можно вызывать туда dispatch?

Содержание инпутов там незачем хранить

Ну что поделать если все другие могут в состояние инпута а редакс не может, надо подорожник ему приложить, мб полегчает🌚

я очень симневаюсь, что есть реальная необходимость синхронно всё это видеть всему приложению. Если действительно нужен доступ к значению поля в других местах, то диспатчить изменения в редакс дебаунсом. Значение инпута при этом всё равно в локалный стейт надо.

Artyom-Burkan Автор вопроса

Всё там хранится правильно. Если перенести во внутрнее состояние компонента, то будет ререндер компонентов, но уже с их стейтом. Надо как-то вызывать асинхронно, наверно

хранение текущего состояния инпутов в большом редаксе не работает — факт. Но никто не запрещает так не делать.

Artyom-Burkan Автор вопроса

Ну, допустим, ты прав и надо будет состояние ввода хранить в локальном стейте. В какой момент и при каком условии обновлять состояние Redux? Просто делать задержку, например 150ms?

а где и как у тебя эти данные используются?

Artyom-Burkan Автор вопроса

Эта многостраничная форма и в ней контролы, которые реагируют на состояние других контролов (т.е. они зависимы друг от друга)

конкретный пример можно?

Состояния контролов тоже в локальном стейте можно хранить

Artyom-Burkan Автор вопроса

Представь лист бумаги (это будет страницей) и там 2 формы: контролы этих форм взаимозависимы

в общем случае дебаунс в 100-500ms поможет на самом деле. Дальше смотреть по потребностям.

Artyom-Burkan Автор вопроса

Да, это я сейчас так и планируют сделать. Пытаюсь понять как это потом перенести в redux-стейт

Artyom-Burkan Автор вопроса

Понял, попробую

да что значит взаимозависями? можно на уровнь абстракции ниже спуститься поговориь?-)) Я ввожу дату рождения у меня появляется гороскоп — вот, например, зависимость, синхронное отображение не нужно, можно 500ms поставить, а у тебя что?-)

Прочитай после 2 запятой

Ну ты тыкаешь кнопки в инпуте смс сообшения, оно отображаеться в риалтайме мгновенно сразу на трех демо превью девайсах мобильных телефонов, типо как оно будет выглядеть

Artyom-Burkan Автор вопроса

Значит, когда ты вводишь гороскоп, то у тебя появляется промежуток этого гороскопа в календаре формы дня рождения у человека. Если вводишь ДР человека, то у тебя отображается гороскоп. И того у тебя 2 формы: для человека и для гороскопа и они взаимозависимы

свой пример я понимаю, спасибо, я говорю о том, что на onChange даты рождения синхронно обновлять гороскоп не нужно

Потом например есть мейн форма в которой есть какие то контакты, ты можешь их добавлять инлайново как инпут с тегами а можешь добавлять через другую форму которая выезжает в дроввере, там добавляешь номера/контакты и они сразу же апдейтяться в мейн форме

тоже абсолютно понятно, запихать в этом кейсе куда-то обновление редакса на ончендж — ошибка

И таких штук было дофига не говоря о том что сама форма еще имела сложности

ну сложнее всего пока был пример, где несколько превью должны были отображать текст, который вводишь. После удаления редакса превьюшки прямо синхронно обновлялись?

Мы переписали на мобх все все все и проблемы все исчезли, убрали тонну оптимизаций, мобх сам все разруливал красиво

превьюши синхронно обновлялись?

Да

А в mobx есть что-то аналогичное redux-saga? Последняя нравится очень.

Вот кажется как раз Максим говорил что они саги прикручивали туда)

При желании ты можешь добавить саги к мобх

Та я думал как то прикрутить и постик написать о бетом, но щас такие времена у меня как творческий кризис🌚

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта