Создание собственных хуков
Иногда нужно повторно использовать одинаковую логику состояния в нескольких компонентах. Решить эту задачу можно с помощью пользовательских хуков без добавления ненужных компонентов.
Например у нас есть логика для отображения статуса текущего пользователя (из примера выше), эту логику можно вынести в отдельный хук и использовать для отображения статуса друзей в сети:
function useUserStatus(id) {
const [isOnline, setIsOnline] = useState(false);
useEffect(() => {
function handleStatusChange(status) {
setIsOnline(status.isOnline);
}
//делаем что-то для обновления статуса, например:
API.login(props.id, handleStatusChange);
});
return isOnline;
}
Мы создали хук для управления статусом.
Как правило если имя функции начинается с ”use
” и она вызывает другие хуки, это пользовательский хук.
Таким образом, теперь мы можем использовать этот хук:
function showMyStatus(props) {
const isOnline = useUserStatus(props.id);
return (
<div> Status: {isOnline ? 'Online' : 'Offline'} </div>
);
}
Last updated
Was this helpful?