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

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

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

20 ответов

16 просмотров

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

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

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

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

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

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

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

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

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

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

А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
Добрый день подскажите пожалуйста может кто то сталкивался с ошибками Sentry 22.10.0 развернутым из helm чарт в Kubernetes? Изначально 3 дня назад очень стало много событий ух...
Tire4 Finist Devops
1
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
почому оно не работает?
Vi Chapmann Chapmann
19
всем привет почти закончил курс После него можно писать свою операционку? Какие библиотеки надо использовать и куда дальше копать для изучения
Linus
19
Так а кто может спарсить всех участников чата? Идишники
Magic
18
Карта сайта