Русский
Открыть в Telegram

Пост Негласные правила React хуков

8 октября 2024
З
Заметки про React
Ссылка
нажмите — покажем
Негласные правила React хуков При объявлении хука useEffect нужно указывать список зависимостей, массив переменных, которые используются внутри хука. Например: const [x, setX] = useState(0); useEffect(() => { console.log(x); }, []); В этом случае хук объявлен неправильно, переменная x не указана как зависимость. Однако, это правило не универсальное. Некоторые переменные являются стабильными, т.е. ссылка на них не меняется при ре-рендере, и их можно не указывать. Для того чтобы не ошибаться, нужно использовать плагин eslint-plugin-react-hooks. Например, какие переменные плагин считает стабильными: const [state, setState] = useState() / React.useState() // ^^^ стабильная ссылка const [state, dispatch] = useReducer() / React.useReducer() // ^^^ стабильная ссылка const [state, dispatch] = useActionState() / React.useActionState() // ^^^ стабильная ссылка const ref = useRef() // ^^^ стабильная ссылка const onStuff = useEffectEvent(() => {}) // ^^^ стабильная ссылка Остальные ссылки не стабильны В своем блоге автор высказывает мнение, что есть недостаток в этом подходе. Если использовать хуки из сторонних библиотек, то возвращаемые в них переменные всегда нужно указывать в зависимостях эффекта. Это может быть setter useAtom из Jotai или вызов функции useMutation из tanstack-query. По идее эти переменные тоже стабильные, но их придется указывать в зависимостях, иначе будет ошибка плагина eslint-plugin-react-hooks. https://macwright.com/2024/09/19/the-extra-rules-of-hooks
31 · 3.2K ·

Рядом в ленте

ЗЗаметки про ReactКонтроль компонентов через URL Интерактивный пост в блоге как сделать поле поиска в таблице, чтобы запрос сохранялся в URL. В примере иллюстрируется распространЗЗаметки про ReactРелиз React DevTools 6.0 Вышел релиз React DevTools 6.0. Основные изменения были связаны с поддержкой серверных компонентов. Что нового: 🔴 Поддержка серверных к
это сообщение
ЗЗаметки про ReactОптимизация загрузки SPA с помощью предварительной загрузки чанков Для уменьшения размера бандла используют подход разделения кода по роутам. В этом подходе приЗЗаметки про ReactEnvironment API в Vite В Vite 6 появится Environment API, которое позволит использовать Vite в разных окружениях. Это нужная фича для React. Например, это позво
ЗЗаметки про ReactЗаметки про React@ru_react_notes · канал · Технологии
3 412подписчиков491постов в индексе
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем