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

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

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

20 ответов

31 просмотр

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

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

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

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

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

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

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

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

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

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

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Я вот подумал. SSE выполняет операции максимум с 64-битной точностью. А FPU - всегда с 80-битной. Разве не должно быть FPU точнее тогда?
The Bird of Hermes
13
как быть с принтером? такой подход прокатит?
zamtmn
12
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Я не понимаю, это троллинг или что? Швабрика поддерживают, который буквально пишет на ассемблере взаимодействия с винапи. Я это ещё написал загрузчик и хоть что-то изучаю в о...
Shadow Akira
6
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Карта сайта