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

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

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

20 ответов

32 просмотра

Привет привет! Отличный вопрос, давай разбираться вместе! Перенос бизнес-логики в 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
Массив с открытыми айдишками кладешь в редакс и вс...

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

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

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

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

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

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

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

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

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

а через 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
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
Ребят в СИ можно реализовать ООП?
Николай
33
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта