【发布时间】:2021-04-29 14:56:00
【问题描述】:
在我的应用程序中,如果组件内部发生任何错误,我需要重定向到顶级错误页面。假设我使用React-Router 并定义了以下路由,
<Switch>
..
<Route path="/error">
<Error />
</Route>
假设在某些低级组件中出现故障。我得到一个带有.message 和.stack 的error 对象。我需要我的Error 组件在路由器<Redirect /> 之后显示错误详细信息。
const [error, setError] = useState({});
const someComponentFetch = async () => {
const url = '/myapp/data';
try {
//...
}
catch (error) {
setError(error);
}
}
if (error.message) {
return <Redirect to="/error" />
}
return (..);
Error 组件需要一个 props 对象:
export default function Error(props) {
return (
<div>
Error Occurred:
<div>
Message: {props.error.message} <br/>
Stack: {props.error.stack}
</div>
</div>
);
}
Error: TypeError: props.error is undefined . 所以<Redirect> 没有传递我的属性。拥有包含错误详细信息的顶级错误页面的最佳方式是什么?如果我在每个组件中检查error ? ..,它就不是顶级页面,而是每个组件内部的一条消息。
【问题讨论】:
-
看看这个reactjs.org/docs/error-boundaries.html。用错误边界包装你的组件
标签: reactjs react-router react-router-dom