Иногда стоит выкладывать рекламу, чтобы просто увидеть, что вы живы, котаны. На посты такого количества реакций никогда нет.
А тема сегодняшней заметки — очередная статья на тему «Нам не нужен useEffect»: вот тут.
В чём же проблема таких статей? Да на самом деле проблемы-то особой и нет, есть некоторая недосказанность.
И недосказанность эта связана с тем, что ВСЕ ваши прекрасные библиотеки управления состоянием, анимацией, загрузкой данных и кешем — будут использовать useEffect внутри себя. И говорить, что вы отказываетесь от useEffect — не очень верно.
Что верно, так это то, что их имплементация будет просто намного лучше протестирована. Ну, возможно.
Тем не менее, самый любимый пример, когда отказ от useEffect действительно имеет смысл — на иллюстрации.
Суть проста: если ваше действие требует полной перезагрузки логики, перерисовки компонента — так перерисуйте, блин, компонент, а не пытайтесь через useEffect чота там стартануть.
Продублирую текстом:
// ❌ BAD: Effect attempts to emulate remount behavior
function VideoPlayer({ videoId }) {
useEffect(() => {
loadVideo(videoId);
}, [videoId]);
}
// ✅ GOOD: key forces clean remount
function VideoPlayer({ videoId }) {
useMountEffect(() => {
loadVideo(videoId);
});
}
function VideoPlayerWrapper({ videoId }) {
return <VideoPlayer key={videoId} videoId={videoId} />;
}
Это настолько чисто, элегантно и понятно — что удивляешься, почему это не стало общим паттерном.
Впрочем, дело за вами, котаны.
#react #useeffect #article
