React useError钩子
创建一个错误分发器。
- 使用
useState()
钩子创建一个保存错误的状态变量。 - 使用
useEffect()
钩子在错误为真时throw
错误。 - 使用
useCallback()
钩子更新状态并返回缓存的函数。
const useError = err => {
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('错误!'));
};
return <button onClick={clickHandler}>抛出错误</button>;
};
ReactDOM.createRoot(document.getElementById('root')).render(
<错误按钮 />
);