Введение
В этом практическом занятии (лабораторной работе) мы научимся создавать диспетчер ошибок с использованием хука useError в React. Этот хук позволяет нам создать переменную состояния, которая хранит ошибку и выбрасывает ее, если она имеет истинное значение. Мы также будем использовать хук useCallback для обновления состояния и возврата закэшированной функции. По завершении этого практического занятия вы сможете эффективно обрабатывать ошибки в своих React-приложениях.
Хук React useError
Файлы
index.htmlиscript.jsуже предоставлены в виртуальной машине (VM). В общем, вам нужно добавить код только в файлыscript.jsиstyle.css.
Этот код создает диспетчер ошибок. Он использует три хука React для управления состоянием ошибки и передачи ее в пользовательский интерфейс.
Вот как работает этот код:
Хук
useState()создает переменную состояния с именемerror, которая хранит объект ошибки. Он принимает начальное значениеerr, которое передается в качестве аргумента в хук.Хук
useEffect()используется для "выбрасывания" ошибки, если она имеет истинное значение. Этот хук принимает функцию и массив зависимостей в качестве аргументов. В данном случае функция проверяет, имеет ли переменная состоянияerrorистинное значение (то есть не являетсяnull,undefined,0,falseили пустой строкой), и выбрасывает ее, если это так. Массив зависимостей -[error], что означает, что эффект будет повторно выполняться каждый раз, когда переменнаяerrorизменяется.Хук
useCallback()используется для создания закэшированной функции с именемdispatchError, которая обновляет переменную состоянияerrorи возвращает новую функцию. Этот хук принимает функцию и массив зависимостей в качестве аргументов. В данном случае функция принимает аргументerr, который представляет собой новый объект ошибки, который нужно передать. Массив зависимостей -[], что означает, что закэшированная функция будет пересоздаваться только при повторном рендеринге компонента.
Вот пример того, как использовать хук useError() в компоненте:
Создайте новый компонент с именем
ErrorButton.Внутри компонента вызовите хук
useError()для получения функцииdispatchError.Создайте функцию обработчика клика с именем
clickHandler, которая вызываетdispatchErrorс новым объектом ошибки.Отрендерите кнопку, которая вызывает
clickHandlerпри нажатии.
Вот код:
const useError = (err = null) => {
const [error, setError] = React.useState(err);
React.useEffect(() => {
if (error) {
throw error;
}
}, [error]);
const dispatchError = React.useCallback((err) => {
setError(err);
}, []);
return dispatchError;
};
const ErrorButton = () => {
const dispatchError = useError();
const clickHandler = () => {
dispatchError(new Error("Error!"));
};
return <button error</button>;
};
ReactDOM.createRoot(document.getElementById("root")).render(<ErrorButton />);
Нажмите на кнопку 'Go Live' в правом нижнем углу, чтобы запустить веб-сервис на порту 8080. Затем вы можете обновить вкладку Web 8080, чтобы предварительно просмотреть веб-страницу.
Итог
Поздравляем! Вы завершили практическое занятие (лабораторную работу) по хоку React useError. Вы можете попрактиковаться в других практических занятиях в LabEx, чтобы улучшить свои навыки.