Custom hooks let you extract and reuse stateful logic. They’re one of the best features of React Hooks.
Creating a Custom Hook
function useLocalStorage(key, initialValue) {
const [value, setValue] = useState(() => {
const stored = localStorage.getItem(key);
return stored ? JSON.parse(stored) : initialValue;
});
useEffect(() => {
localStorage.setItem(key, JSON.stringify(value));
}, [key, value]);
return [value, setValue];
}
// Usage
function App() {
const [name, setName] = useLocalStorage('name', 'Guest');
return <input value={name} onChange={e => setName(e.target.value)} />;
}useFetch Hook
function useFetch(url) {
const [data, setData] = useState(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
useEffect(() => {
async function fetchData() {
try {
const res = await fetch(url);
const json = await res.json();
setData(json);
} catch (e) {
setError(e);
} finally {
setLoading(false);
}
}
fetchData();
}, [url]);
return { data, loading, error };
}Rules
- Name must start with “use”
- Can call other hooks
- Each use creates independent state
References
Discover more from C4: Container, Code, Cloud & Context
Subscribe to get the latest posts sent to your email.