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

Привет, как правильно решить такую проблему: код ниже приводит к бесконечому

обновлению компонента,


useEffect(() => {
dispatch(GetPosts(params))
}, [params])


а если передать все свойства объекта, то компонент обновляется только после обновления свойств, как положено.


useEffect(() => {
dispatch(GetPosts(params))
}, [params.title, params.body, params.active])


Можно-ли как-то лаконично передать все свойства объекта в deps, или как еще можно решить эту проблему?

37 ответов

9 просмотров

Object.values?

У тебя объект меняется. Используй только то что нужно и это передавай в экшн. А не пачкой.

Frank 🦠- Автор вопроса
Илья
У тебя объект меняется. Используй только то что ну...

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

Frank 🦠- Автор вопроса
Илья
Ты понимаешь как работает useEffect?

да. юзэффект это метод, который срабатывает после рендера компонентов или при изменении аргументов []

Frank 🦠
ага. а ты это к чему?

К тому, что ты туда передаешь объект. Который не понятно от чего обновляется. А во втором твоем примере, ты передаешь лишь часть, которая не меняется.

Илья
Наоптимизировался)

Что же делает useEffect? Используя этот хук, вы говорите React сделать что-то после рендера. React запомнит функцию (то есть «эффект»), которую вы передали и вызовет её после того, как внесёт все изменения в DOM. В этом эффекте мы устанавливаем заголовок документа, но мы также можем выполнить запрос данных или вызвать какой-нибудь императивный API.

Frank 🦠- Автор вопроса
Илья
К тому, что ты туда передаешь объект. Который не п...

это понятно, я недалек в реакте и хочется знать, как эту проблему другие люди решают. можно ведь например сделать глубокое сравнение объектов и обновлять в случае, если они не совпадают?

Frank 🦠
это понятно, я недалек в реакте и хочется знать, к...

Ну у тебя в экшене, что, все из параметров используется?

Frank 🦠- Автор вопроса
Илья
Ну у тебя в экшене, что, все из параметров использ...

не все сразу конечно. в зависимости от действия используется соответствующий параметр и их штук 15 например. разве вписывать их в deps есть лучшее решение?

Frank 🦠
не все сразу конечно. в зависимости от действия ис...

А не проще разделить экшн на мелкие экшены, а не делать все скопом в одном месте?

Frank 🦠
не все сразу конечно. в зависимости от действия ис...

useMemo, если я правильно понял вопрос и проблему

Volodymyr Klimov
useMemo, если я правильно понял вопрос и проблему

А чем он тут поможет? У него же экшены бахают из-за того, что в депсы он кинул весь объект, а этот объект обновляется после этого экшена.

Frank 🦠
это понятно, я недалек в реакте и хочется знать, к...

если объект в состоянии мутирует в сторону удаления подобъекта, то обновляется весь стейт. если же подобъект добавляется в состояние, ре-рендер всего состояния не вызывается. тебя же этот вопрос интересует?

Откуда берется "params"?

Frank 🦠- Автор вопроса
Andrew
если объект в состоянии мутирует в сторону удалени...

проблему ты понял правильно, а я ищу ее решение. просто не хочется вписывать все свойства объекта в deps, т.к это масштабируется плохо. вот можно было бы сделать так useEffect(() => {}, […params]), но увы, ошибка синтаксическая

Frank 🦠
проблему ты понял правильно, а я ищу ее решение. п...

решение простое. не использовать реакт

Frank 🦠- Автор вопроса
Илья
Что делает getPosts?

принимает параметры и отправляет запрос в апи

Frank 🦠- Автор вопроса
Frank 🦠
принимает параметры и отправляет запрос в апи

Какие параметры? Почему бы не разбить экшн? Есть полное впечатление, что ты идешь вообще не туда. Если у тебя прям на столько тяжелая ситуация, ну сделай глубокую проверку на внутренности объекта.

Frank 🦠- Автор вопроса
Илья
Какие параметры? Почему бы не разбить экшн? Есть ...

у меня тоже есть такое впечатление.. на деле там ситуация сложнее, у меня там параметры для фильтрации и сортировки, все это хранится в контексте и при обновлении я вот должен эшкн диспатчить

Frank 🦠
у меня тоже есть такое впечатление.. на деле там с...

По-хорошему, для фильтрации один экшн, для сортировки другой и т.д.

Frank 🦠
у меня тоже есть такое впечатление.. на деле там с...

То есть у вас useEffect зависит от обновления данных, которые сам и обновляет, понимаете?

Frank 🦠
у меня тоже есть такое впечатление.. на деле там с...

У тебя в этом объекте и самы посты лежат еще чтоль?

Frank 🦠- Автор вопроса
Volodymyr Klimov
То есть у вас useEffect зависит от обновления данн...

конечно, конечно, вот и ищу решение. возможно использовать событие в контексте

Frank 🦠
конечно, конечно, вот и ищу решение. возможно испо...

Используйте useReducer в контексте, и с его помощью обновляйте его состояние

Frank 🦠- Автор вопроса
Илья
У тебя в этом объекте и самы посты лежат еще чтоль...

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

Volodymyr Klimov
Используйте useReducer в контексте, и с его помощь...

Ну все теперь будет +1 к последователям редакс не нужон🌚

Maxim Koylo
Ну все теперь будет +1 к последователям редакс не ...

Не факт, что этим фильтрам было бы лучше в редаксе)

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
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
Карта сайта