Tan*_*adi 5 error-handling reactjs react-hooks
我正在尝试编写一个错误处理程序,但收到此错误:React Hook“useHttpErrorHandler”无法在回调内调用。React Hooks 必须在 React 函数组件或自定义 React Hook 函数中调用,我不知道如何处理这个 errorHandler。
这是 withErrorHandler :
const WithErrorHandler = (WrappedComponent, axios) => {
return props => {
const [error, clearError] = useHttpErrorHandler(axios);
return (
<div>
<ErrorModal show={error} errorModalClosed={clearError}>
{error ? error.message : null}
</ErrorModal>
<WrappedComponent {...props}/>
</div>
)
}
};
export default WithErrorHandler;
Run Code Online (Sandbox Code Playgroud)
这是http错误处理程序:
export default httpClient => {
const [error, setError] = useState(null);
const reqInterceptor = httpClient.interceptors.request.use(req => {
setError(null);
return req;
});
const resInterceptor = httpClient.interceptors.response.use(
res => res,
err => {
setError(err);
}
);
useEffect(() => {
return () => {
httpClient.interceptors.request.eject(reqInterceptor);
httpClient.interceptors.response.eject(resInterceptor);
};
}, [reqInterceptor, resInterceptor])
const errorConfirmHandler = () => {
setError(null);
};
return [error, errorConfirmHandler]
}
Run Code Online (Sandbox Code Playgroud)
小智 -2
您不能在 return 语句中使用钩子,请尝试下面,将钩子保留在 return 之外:
const WithErrorHandler = (WrappedComponent, axios) => {
const [error, clearError] = useHttpErrorHandler(axios);
return props => {
return (
<div>
<ErrorModal show={error} errorModalClosed={clearError}>
{error ? error.message : null}
</ErrorModal>
<WrappedComponent {...props} />
</div>
);
};
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20196 次 |
| 最近记录: |