Comments 9
Главный вопрос: чем этот пакет лучше, чем Redux?
Назначить в противники вещь с известным заметным шлейфом проблем и победоносно закатать её в асфальт — отличный риторический приём. Всегда работает. Даже на технарей.
Главный вопрос: а зачем этот пакет сравнивать именно с Redux? Это выглядит сравнением настоящего слона и фарфоровой статуэтки слона. И то и другое можно назвать «слон», но на этом сходства заканчиваются.
3) Снижаем количество повторных рендеров с помощью React.memo() and useCallback()
Каждый раз когда я читаю что-нибудь про state management и дохожу вот до таких вот примерчиков — меня начинает преследовать ощущение, что, простите меня за мой французский, меня где-то нае****.
Потому что когда мне нужен state management — он мне нужен вот как раз для этих вещей — убрать страдания над повторными рендерами и прочим накатыванием стейта подальше из значимого кода. Желательно в библиотеку, этому как раз там очень хорошее место. Нафига мне «стейт менеджмент», если мне после этого самого менеджмента всё равно надо закатывать солнце вручную, если я хочу эффективного рендера? Ах, в 200 пожатых байт ничего такого не впихнуть? Ну а зачем мне тогда 200 пожатых байт, если всё что они дают — это тоненький слой сахара?
Это выглядит сравнением настоящего слона и фарфоровой статуэтки слона.
Имхо, автор ставит целью показать, что слон во многих проектах вообще не нужен.
Каждый раз когда я читаю что-нибудь про state management и дохожу вот до таких вот примерчиков — меня начинает преследовать ощущение...
Не могу не согласиться. Впрочем, автору плюс, что он этот примерчик сразу честно приводит.
А вы просто перестаньте считать реакт View, и отнеситесь к нему как к фреймворку.
UPD: Решил пояснить свою мысль более подробно. Я не говорю что реакт это библиотека (хотя так считаю создатели самого реакта) как не говорю что он фреймворк.
Я скорее о том что его МОЖНО использовать и как то, и как это. На моей практике реакт использовался ближе к понимаю "фреймворк", и это прекрасно работало. Реакт это же не только (props, state) => UI.
Есть контекст, есть возможность использовать HOC для более сложной, чем UI логики. Есть кучу пакетов которые добавляют "фреймворкности" и которые неразрывно связаны с реактом, react-router например. Вы сами загоняете себя в рамки если всегда думаете в стиле "использую реакт только как View часть, чтоб можно было перейти". Вот в данной статье тоже самое, вам показали другой (и возможно более удобный для вашего проекта) стейт менеджер, а вы отказываетесь от него только по причине выше названой
Более того, реакт в качестве чистой отображаловки куда интереснее реакта для всего. Отображение — это очень сильная сторона в реакте, а всё остальное — на редкость неинтересное.
Я не стал в примерах ничего менять на свой вкус, это же перевод.
Недавно попробовал использовать это решение, и это ощущается супер удобным и логичным.
Просто "выносим" из компонента хук вместе со всем состоянием и используем везде, где нужно, и, что радует, можем пользоваться всеми возможностями, вроде useEffect
, причем они продолжают работать и после unmount, если провайдер еще примонтирован.
Unstated-next: минималистичное управление состоянием React-приложения