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

Доброго времени суток! Делаю пет проект React+ Redux-toolkit. Объясните пожалуйста,

как эффективно использовать хук useSelector. Есть компонент/страница "Корзина" с такой структурой: Basket->BasketList->BasketFoodType->BasketItem .
В текущей реализации, я вызываю useSelector 1 раз в компоненте Basket, получая весь "слайс" корзины, а затем прокидываю данные в дочерние компоненты через пропсы.
И вот возник вопрос, насколько это правильно. Могу ли я в каждом компоненте вызывать useSelector, сразу получая нужные мне данные, тем самым избавится от проброса данных через пропсы. Или нет? Подскажите пожалуйста, а то есть чувство, что натягиваю сову на глобус

14 ответов

19 просмотров
Sultan-Mashukov Автор вопроса

Или же оба варианта имеют право на жизнь, просто у меня "контейнерный компонент" получился раздутый (Basket)

Пздц неправильно

Ты занимаешься props drilling'ом, только при это используя стейт редакса. Т.е то что было сделано дабы избежать такое поведение, ты все равно используешь, тем самым нивелируя саму концепцию. Короче это дичь, получай где тебе нужно через useSelector

Sultan-Mashukov Автор вопроса
Стас
Ты занимаешься props drilling'ом, только при это и...

Да, так и есть. Хорошо что спохватился вовремя. Спасибо за ответ!

Sultan Mashukov
Да, так и есть. Хорошо что спохватился вовремя. Сп...

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

Oleg
использование везде useSelector привязывает твой к...

Конект апи валидно вроде в основном только для классовых компонентов

Oleg
использование везде useSelector привязывает твой к...

Ну разработчики redux решили, что connect это устаревшая штука. Не рекомендуется к использованию

Sultan-Mashukov Автор вопроса

Да, это тоже верно. Но конкретно в моем случае, компоненты не будут переиспользоватся в других местах, они будут только в одном месте. А что касается connect, то я специально от них ушёл, ибо с хуками лично мне более нравится. Без всяких mapProps.. и тп

почему не для функциональных?

Sultan Mashukov
Да, это тоже верно. Но конкретно в моем случае, ко...

> они будут только в одном месте никто не застрахован!

Sultan-Mashukov Автор вопроса
Oleg
почему не для функциональных?

Конект - из redux-react. Хуки из redux-toolkit

Sultan Mashukov
Конект - из redux-react. Хуки из redux-toolkit

Неа) useSelector тоже из редакс реакт

Sultan-Mashukov Автор вопроса
Oleg
хуки есть и в пакете react-redux

Извиняюсь, не стоило писать, не изучив

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
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
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта