Почему реакт идёт куда-то не туда pt3
- React Server Сomponents(RSC)
- React Compiler(RC)
- Hooks Вы тута
Хуки на момент своего выхода были очень крутым решением. Они позволили упростить композицию и типизацию в наших приложениях. Это позволило очень хорошо упростить нашу кодовую базу. Но у всего есть цена. Появились правила хуков, которые никак не отражены в нашем языке. И ты должен помнить, что хуки всегда должны вызываться в том же порядке и ты не можешь в один момент в компоненте выполнить 3 хука, а потом 5 хуков. У тебя как минимум в дев режиме реакт сломается.
Ну и эти ограничения вроде как не смертельны. В ангуляре и вью, к примеру, всё точно так же. Ты обязан описать всю логику в компоненте. И она не может появиться из неоткуда. За одним сверхважным исключением. ОЧЕНЬ ВАЖНЫМ. Хуки опираются на ререндер в своей работе. И это кардинально меняет картину разработки. Да, ты можешь обмазаться оптимизациями типа RC и подобного, но главное сделать ты не можешь: ты не можешь не выполнять весь код, который у тебя написан.
Почему это критично? Всё просто: потому что мы пишем библиотеки, которые решают задачу. Но почти никогда нам не требуется решение всей задачи в нашем приложении.
Простой пример: посылка запроса на сервер. В реализации этой посылки мы можем описать много логики. К примеру:
- Статус загрузки: true/false
- Загруженные данные: null | Data
- Ошибка: null | Error
- Какую часть ответа загрузили: проценты.
И вот вам сразу пример: https://codesandbox.io/p/sandbox/signal-components-simple-example-74tdrh
Вы не можете используя хуки отказаться от ререндеров, так как вам, к примеру, не нужен процент загрузки. Вы обязаны выполнить ВЕСЬ код, который написан с помощью хуков. И это самый важный момент, почему все кроме реакта используют реактивные системы для описания своей логики.
Моё мнение простое: выносите всю логику в стейт менеджер. Используйте реакт как рендерилку приложения и не более. Не верьте команде реакта, что их волшебный компилятор поправит все проблемы. Нет, не поправит. Концепция глубоко сломана. Метрикой хорошести вашего кода должно быть количество хуков в приложении. Чем их меньше, тем приложение лучше. В идеале их должно быть НОЛЬ.
Ну и обратите внимание на @reatom_ru и @effector_ru. Они помогут вам в улучшении вашего кода.
Post #142
1.35K