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

Всем привет!) Вопрос: Неоднократно слышал, что вся бизнес-логика должна быть перенесена

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

20 ответов

36 просмотров

Привет привет! Отличный вопрос, давай разбираться вместе! Перенос бизнес-логики в Redux - это хорошая практика, которая позволяет управлять состоянием приложения централизованно. Однако, есть случаи, когда не все состояние должно быть перенесено в Redux, и это касается и мапящихся компонентов с локальным состоянием. В твоем случае, если каждый компонент должен иметь свое собственное состояние открытия окна, переносить этот стейт в Redux может привести к проблемам, потому что он будет глобальным. Вместо этого, я рекомендую сохранить состояние открытия окон внутри каждого компонента самостоятельно, используя локальный компонентовый стейт. Это называется "локальное состояние" или "локальный стейт". Вот как ты можешь это сделать: import React, { useState } from 'react'; const MyComponent = () => { const [openWindow, setOpenWindow] = useState(false); const handleButtonClick = () => { setOpenWindow(!openWindow); }; return ( <div> <button onClick={handleButtonClick}>Toggle Window</button> {openWindow && <div>Мое выпадающее окно</div>} </div> ); }; export default MyComponent; В этом примере мы используем useState из React для создания локального состояния openWindow и функции setOpenWindow, которая позволяет изменять это состояние. При каждом клике по кнопке, вызывается handleButtonClick, чтобы переключить openWindow между true и false. В зависимости от значения openWindow, мы рендерим или скрываем выпадающее окно. Таким образом, каждая карточка будет иметь свое собственное локальное состояние openWindow, и при клике на кнопку будет открываться только соответствующее окно. Важно отметить, что не всегда нужно переносить все состояние в Redux. Локальное состояние хорошо подходит для компонентов, которые имеют только приватные изменяемые данные. Надеюсь, это поможет тебе в работе с бизнес-логикой и состоянием в React! Если у тебя есть еще вопросы, не стесняйся задавать. Я здесь, чтобы помочь!

Виктор- Автор вопроса
Виктор- Автор вопроса
ㅤㅤㅤㅤㅤㅤㅤ
Привет привет! Отличный вопрос, давай разбираться ...

у меня так и сделано, вопрос как раз и был, как такое в редакс затолкать, но судя по фразе "Важно отметить, что не всегда нужно переносить все состояние в Redux. Локальное состояние хорошо подходит для компонентов, которые имеют только приватные изменяемые данные." - никак :(

Виктор- Автор вопроса
Yurii
chatgpt залогинься

Юрий, можно узнать ваше компетентное мнение по этому вопросу, раз уж вы здесь ?:)

Где тут бизнес логика?

Виктор- Автор вопроса
Nikko
Ты реально не понял что это нейронка?

Да как-то подвоха не ожидал)

Виктор- Автор вопроса
IceBerg
Где тут бизнес логика?

Приветствую! ) Так как нет четкого определения бизнес-логики, боюсь, что я мог "неправильно выразиться" :)

Виктор- Автор вопроса
IceBerg
Но хотелось бы версию услышать хотя бы

Насколько я понимаю, это логика связанная конкретно с данными с бэкэнда и их обработкой, и да, скорее всего это наверное не относится к работе выпадающего списка карточки

Виктор
Юрий, можно узнать ваше компетентное мнение по это...

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

Yurii
chatgpt залогинься

Я здесь, чтобы помочь!

Массив с открытыми айдишками кладешь в редакс и всё

Виктор- Автор вопроса
Sergey Grishchenko
Массив с открытыми айдишками кладешь в редакс и вс...

У меня только одно окно должно быть открыто. В общем-то наверное да, таким способом тоже можно, но похоже, что необязательно. Но спасибо за идею

Виктор
У меня только одно окно должно быть открыто. В общ...

Ну тогда хранить одну открытую айдишку, ну

Виктор
У меня только одно окно должно быть открыто. В общ...

А я вот не думаю, что это нужно в редакс выносить

Виктор
У меня только одно окно должно быть открыто. В общ...

В этом конкретном кейсе может и не обязательно, но подобные кейсы ты ещё встретишь в своей жизни, и решение будет таким

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта