TGViewer
React React @react_lib · 2.66K subscribers
Post #795 808
Custom Hooks

Часто мы пишем один и тот же код в разных компонентах: работа с localStorage, отслеживание размеров окна, дебаунс запросов. И вот тут кастомные хуки реально спасают.

Например, простой хук для работы с localStorage 👇


import { useState } from "react";

function useLocalStorage<T>(key: string, initialValue: T) {
const [value, setValue] = useState<T>(() => {
const stored = localStorage.getItem(key);
return stored ? JSON.parse(stored) : initialValue;
});

const setStoredValue = (newValue: T) => {
setValue(newValue);
localStorage.setItem(key, JSON.stringify(newValue));
};

return [value, setStoredValue] as const;
}

export default useLocalStorage;


Теперь можно использовать так:


const [theme, setTheme] = useLocalStorage("theme", "light");


🔥 Плюсы:

- код становится чище и переиспользуемым;
- избавляемся от дублирования логики;
- легко тестировать и поддерживать.

Я заметил, что когда начинаешь собирать библиотеку своих хуков, разработка ускоряется в разы. Советую прямо сегодня завести папку hooks и складывать туда такие полезности.

📲 Мы в MAX

✍️ @React_lib
  • ❤ 1
  • 👍 1
  • 🔥 1
More from @react_lib
  1. Sep 11, 2026🚨 Избегай монолитных компонентов, которые объединяют в себе отображение, управление состо…
  2. Sep 7, 2026❌ Избегайте использования нескольких переменных состояния для отслеживания статуса. ✅ Вмес…
  3. Aug 31, 2026Сегодня написал пост на тему, которая регулярно бьёт по скорости разработки: почему React-…
  4. Aug 24, 2026❌ Избегайте «прокидывания» пропсов (prop-drilling) для расширения компонентов ✅ Вместо это…
  5. Aug 23, 2026🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.r…
  6. Aug 21, 2026⚛️ Реактивность - это просто (и всего 35 строк кода) Мы часто воспринимаем реактивность в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →