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

В интернете полно статей про использование useContext и useReducer для

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

36 ответов

14 просмотров

Используй стейт менеджер, effector, reatom, mobx, redux и тд

Для общего хранилища данных нет ничего лучше стейт-менеджера

https://gist.github.com/XaveScor/99431c573b53b8a0c41fb3b5fec522bc

В доке?

Igor N
Для общего хранилища данных нет ничего лучше стейт...

Так он не всегда нужен, мож человек хочет просто и лаконично

Sasha- Автор вопроса
Тимофей 🛴
Используй стейт менеджер, effector, reatom, mobx, ...

Я рассматривал redux, но он показался слишком громоздким - нужно подключать его, бибилиотеку типов для него, писать редьюсеры и всю остальную структуру. А задача сводится к sharing'у небольшого количества данных.

Sasha
Я рассматривал redux, но он показался слишком гром...

Ну используй тогда просто React.Context и всё, информация в доке реакта

Igor N
так там всё просто и лаконично

Ну по факту это выливается все равно в много букв, плюс надо теорию понимать, редьюсеры там всякие, подписывать хуками на это все как-то

Контекст хорош, но проблемы начнутся с отслеживанием асинхронщины. Если не имплементировать чьи-то готовые решения.

Sasha- Автор вопроса
3axap KNbaHoB
Так он не всегда нужен, мож человек хочет просто и...

Да, мне нужно бы попроще. Приложение небольшое.

Igor N
так там всё просто и лаконично

Экшны, экшнКриэйтеры, думать что в стор положить, что не положить

Sasha- Автор вопроса
Den Pol
Контекст хорош, но проблемы начнутся с отслеживани...

Возможно тогда стоит все-таки подключить redux, как думаете?

Igor N
не редаксом единым

Я тоже нуб, Реакт+Редакс, другого не знаю

Sasha
Возможно тогда стоит все-таки подключить redux, ка...

Если тебе не важно что, и ситуация позволяет, то возьми любой из предложенных СТМов, который НЕ редакс. С редаксом скорее всего так или иначе столкнешься, зато у тебя будет опыт в чем то еще и видение на то хорошо Редакс или нет, удобный или есть что то еще. Чтобы потом не было чего то типа "я ток редакс умею, остальное не оч, пробовать зачем, весь рынок в редаксе"

3axap KNbaHoB
Какого рода проблемы?

Отмена запроса по действию пользователя, например. У меня больше проблем не возникло, т.к. я не усложняю логику. Плюс использования чистого контекст апи - простая кодовая база.

Sasha- Автор вопроса
Sasha- Автор вопроса
Den Pol
Отмена запроса по действию пользователя, например....

Мне нравится то, что контекст - встроенная функциональность. Не нужно подключать дополнительных библитек. Поддержка будет такая же как и у самого фреймворка по скорости и качеству.

Sasha
Мне нравится то, что контекст - встроенная функцио...

поддерживаю. но, в отличие от саг асинхронные экшены хз как тестировать (что важно для больших проектов). а, ну да, там же нет никаких асинхронных экшенов, ну нет экшенов - нет проблем.

Sasha
Мне нравится то, что контекст - встроенная функцио...

Что будешь делать если контекст устареет?

Sergey 🧻🤲
Что будешь делать если контекст устареет?

По-моему, классы устареют раньше, за контекст можно не беспокоиться.

Sasha- Автор вопроса
Sergey 🧻🤲
Что будешь делать если контекст устареет?

Вроде разработчики наоборот развивают хуки. Наверное ответ тот же что и если React устареет. Буду мигрировать со временем.

Sasha- Автор вопроса
Sergey 🧻🤲
Хуки это не контекст

Использование контекста основано на хуках.

Sasha
Использование контекста основано на хуках.

Эм, новый контекст появился в 16.3 а хуки в 16.8

Sasha- Автор вопроса
Den Pol
С хера ль?

Разве useContext не хук? Разве это не часть функциональности контекста?

Sasha
Разве useContext не хук? Разве это не часть функци...

Это хук для контекста, но контекст можно использовать и без этого хука

Sasha- Автор вопроса
Sergey 🧻🤲
Эм, новый контекст появился в 16.3 а хуки в 16.8

Возможно я имею еще мало опыта и ошибаюсь.

Sasha- Автор вопроса
Den Pol
Contex.Consumer был раньше

Я пришел в React когда это все уже было, поэтому плохо знаю историю. Ну и опыта мало.

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

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

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...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
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
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта