process.exit(‿|‿)
гайз есть некоторая разметка меню div>div.item где-то в середине есть некий статичный пустой div#widgetPlaceholder есть асинк чанк с виджетом который грузится асинхронно и делает ReactDOM.createPortal(<widget />, document.getElementById('widgetPlaceholder')) так вот при первом рендере все ок, но стоит отререндериться менюшке - ссылка на дом ноду дохнет и виджет пропадает думаю рефка помогла бы решить эту проблему, но вдруг есть другие решения и кто сталкивался
Igor
У меня есть компонент в котором есть кнопочка -> которая делает запрос на сервер, как мне отследить что запрос завершился в компоненте где я вызываю этот запрос? (архитектура action redux saga)
Юрий
У меня есть компонент в котором есть кнопочка -> которая делает запрос на сервер, как мне отследить что запрос завершился в компоненте где я вызываю этот запрос? (архитектура action redux saga)
у тебя ведь в саге есть try/ catch, если запрос успешен, вызывай action success, если в catch упал, вызывай action failure. А там уже можешь в сторе поменять например значение alert, которые по дефолту у тебя null, тем самым можешь посмотреть в компоненте, какой результат, если задача в этом
Bogdan
а кто на ридаксе сидит, если много екшенов, у каждого свой флаг загрузки? либа вроде была или я не так помню?
Bogdan
что ты имеешь ввиду?
разве не понятно? флаг заугрузки на каждый запрос свой, иначе как ты узнаешь, что идет загрузка? тот же еффектор или аполо это из коробки даст
Oruj
ребят я не могу найти в доках, где указывается что нужно масивом передавать в deps тот пропс, который ожидается на изменение https://ru.reactjs.org/docs/hooks-effect.html
Oruj
ааа [props.friend.id]); // Повторно подписаться, только если props.friend.id изменился а че так под конец только
Oruj
вдруг это костыль
Bogdan
ребят я не могу найти в доках, где указывается что нужно масивом передавать в deps тот пропс, который ожидается на изменение https://ru.reactjs.org/docs/hooks-effect.html
ну очевидно, если от него что то зависит внутри, его нужно передать иначе ничего рабоать не бдет, потому что еффект при маунте отработает раз
Noisy
аппар
Коровийвирус
@bshelomanov https://www.npmjs.com/package/redux-loading-status
Юрий
у тебя бекенды хотят только измененные данные? бред какой, им должно быть не важно, а если кто то левого поля кинет, бд упадет? лол
+, проверка стоит и бэкенд хочет только поля которые изменились. причина следующая: приходит email, он сравниваеться, а он такой же как и был, это тоже самое что меняешь на email другой но он уже в базе есть, что бы ты его не смог засетить
Bogdan
да ничего там не меняется, чел значит криво сделал, ну как выше сказал делай тогда
Коровийвирус
https://github.com/nishanbajracharya/redux-loader
Коровийвирус
такой еще есть
Юрий
да ничего там не меняется, чел значит криво сделал, ну как выше сказал делай тогда
ну тип, если ты отправил емаил которые уже есть в базе, оно возвращает что такой имейл уже занят
Юрий
так ты же про апдейт говоришь
да, то есть новый закинешь - все ок, отправишь такой же, даст ошибку что он занят, логика такая
Bogdan
да, то есть новый закинешь - все ок, отправишь такой же, даст ошибку что он занят, логика такая
апдейт - это апдейт, создать - это создать, конечно при создании проверяет, что такой есть, при апдейте тоже проверяет, но если т кинешь тот же, ему должно быть не важно
Bogdan
тут уже вопрос, как проверить тогда какие данные изменились, при сабмите?
ну тут я выше предложил варик, кинь массив полей, по ним уже из формика достань нужные
Bogdan
куда кинуть?
в свою ф-ю апдейта или что у тебя там, передай просто массив полей вторым аргументом, первым формика обьект, из формака обьекта достань поля, которые указал в массиве, можешь подумать как лучше сделать, я первый на ум пришедший озвучил просто
Bogdan
честно, не понимаю логику, зачем массив полей и массив с моделью формика?
а как ты узнаешь, какие поля передать в запрос, если у формика вроде как нету такого методы? может у него он и есть
Bogdan
формик возвращает модель всех полей и данных с импутов
ну, а ты хочешь передать не все поля, а измененные или что?
Юрий
ну, а ты хочешь передать не все поля, а измененные или что?
только те которые уже изменились - да, те которые остались прежними - не отправлять
Bogdan
ну и прицепи какой то обработчик на инпуты, и пихай в стейт имя поля, да прям в формика стейт пихани, и все эти поля забери и сформируй уже обьект с измененными
Sergey
1. в форму передаются начальные значение, при сабмите такие же, но изменённые юзером. 2. Сравниваем их 3. ... 4. PROFIT
Надежда
Всем привет) хочу создать крестики нолики 5 в ряд с библиотекой react . Такие чтоб в пользовательском интерфейсе выбирался размер поля и в зависимости выбранного размера выводилось количество ячеек. Например размер поля 10*10 и 15*15.
Bogdan
1. в форму передаются начальные значение, при сабмите такие же, но изменённые юзером. 2. Сравниваем их 3. ... 4. PROFIT
нет, при изменении формы, в стейте формика будет текущая форма, как ты узнаешь, что поле обновилось? может нужно жоку формика глянуть, возможно там есть что то такое
Юрий
1. в форму передаются начальные значение, при сабмите такие же, но изменённые юзером. 2. Сравниваем их 3. ... 4. PROFIT
я об этом впервую очередь и подумал, при сабмите проверить, но думал еще варианты
Bogdan
я об этом впервую очередь и подумал, при сабмите проверить, но думал еще варианты
а ну да, при сабмите проверить, что то я закрутил, но тогда тебе нужно сохранить данные старой формы и сравнить с новой
Sergey
нет, при изменении формы, в стейте формика будет текущая форма, как ты узнаешь, что поле обновилось? может нужно жоку формика глянуть, возможно там есть что то такое
ты передаёшь туда начальные значение. При сабмите он отдаёт актуальные и нужно их просто сравить. Или я что-то упускаю?
Юрий
я могу ведь справнить пропсы и данные при сабмите?
Bogdan
ты передаёшь туда начальные значение. При сабмите он отдаёт актуальные и нужно их просто сравить. Или я что-то упускаю?
нет, ты же в сабмит зайдешь непосредственно по нажатию, будет текущий стейт , а не старый
Sergey
нет, ты же в сабмит зайдешь непосредственно по нажатию, будет текущий стейт , а не старый
текущий, да. Но ты туда передаёшь начальный. В пропсы. Вот с ним и нужно ведь сравнить
Sergey
спасибо, что держишь в курсе, а то я уж волноваться начал
😁 я даже не заметил что там вопроса не было))
Bogdan
текущий, да. Но ты туда передаёшь начальный. В пропсы. Вот с ним и нужно ведь сравнить
смотри, т открыл форму, стейт есть текущий, ввел что то в инпут, стейт текущий новый, но старого нету, с чем ты сравнишь? если не сохранишь старый?
Юрий
только инетересно, а если будет 50 полей, как их всех сравнивать? )))
Bogdan
а изначально чем форму заполняешь?)
ты не понял о чем я ? ну ты как только начнешь менять инпута значения, стейт придет тут же новый, а старого нету, сравнить не можешь уже, с чем ты сравнишь? текущий с текущим?
Bogdan
только инетересно, а если будет 50 полей, как их всех сравнивать? )))
ключики все, даконечно бред, передавай беку все
Юрий
есть новое и старое, но есть модель с ключами и строки по отдельности
Sergey
есть новое и старое, но есть модель с ключами и строки по отдельности
так в любом случае лучше разделять модель от её редактирования в форме, хотя бы ментально)) Поверьте, я много гавна наелся 😁
Юрий
так в любом случае лучше разделять модель от её редактирования в форме, хотя бы ментально)) Поверьте, я много гавна наелся 😁
ну сейчас приходят обьект с полями, я достаю эти поля, записываю в формик как дефолт значение
Sergey
ну сейчас приходят обьект с полями, я достаю эти поля, записываю в формик как дефолт значение
ну всё норм. Если нужно просто "массировать" данные туда-сюда это не страшно. Тут нужно от формы плясать, а не от структуры данных бэкенда
Bogdan
ну всё норм. Если нужно просто "массировать" данные туда-сюда это не страшно. Тут нужно от формы плясать, а не от структуры данных бэкенда
короче сделать хук можно, который на каждый тик сравнит поля, если поля поменялись, засунет их себе
Юрий
Bogdan
жёстко ты задачи усложняешь)) Ты на джаве не пишешь случаем?)))
при таком хуке ему не нужно делать копию стейта, ну можно еще подумать, просто лень уже
Sergey
при таком хуке ему не нужно делать копию стейта, ну можно еще подумать, просто лень уже
так и при обычном не нужно. Он же говорит что старый стэйт никуда не пропадает, как и ожидалось собственно)
Юрий
то есть есть поля не примитивные? Или о чём речь?
Обычный поля, в аргументе компонента сразу достаю { name, и тд}
Юрий
Я их в стейт не кладу)
Sergey
Обычный поля, в аргументе компонента сразу достаю { name, и тд}
то есть надо примитивы по значениям просто сравить?
Sergey
то есть надо примитивы по значениям просто сравить?
если так, то Object.entries / Object.keys -> filter и т.д.
Юрий
то есть надо примитивы по значениям просто сравить?
Получается примитивные значением с значением объекта с Формика
Sergey
как это не пропадает? ну проверь, удивишься
проверял сотню раз. Я хз, может мы о разном просто говорим
Bogdan
проверял сотню раз. Я хз, может мы о разном просто говорим
ты как только изменяешь ипут, он в стейт пишет новое значение, затрет старый, в компонент придет новое значение
Bogdan
мы говорим ведь о стейте формика?
Sergey
мы говорим ведь о стейте формика?
да. Смотри, ты кладёшь туда значения: <Formik initialValues={initial} onSubmit={onSubmit} /> function onSubmit(values) { // сравниваем values и initial }
Sergey
как бы и всё)
Bogdan
да. Смотри, ты кладёшь туда значения: <Formik initialValues={initial} onSubmit={onSubmit} /> function onSubmit(values) { // сравниваем values и initial }
камон, ну ты что, если он не изменит по твоему мнению стейт, как он отправит новое значение? формик внутри на поле обработчик кидает
Sergey
камон, ну ты что, если он не изменит по твоему мнению стейт, как он отправит новое значение? формик внутри на поле обработчик кидает
ты либо троллишь как-то жёстко, либо у тебя в голове мутабельность, я чёт хз 🤷‍♂️ Не хочу больше спорить
Roman
Привет. Есть хук useSelector. Можно ли внутри него вызывать обновление состояния? Или как это правильно сделать?