IRedBoxHandler
类型:接口
IRedBoxHandler
提供了一个扩展点,允许在 React 实例中进行自定义错误处理。如果您有一个现有的错误报告系统,并且希望将 React 错误报告到该系统,这会很有用。RedBoxHandler
的默认实现会在一个覆盖整个应用窗口的错误屏幕中显示错误消息。
如果您想保留现有的 RedBox
行为,同时也将错误报告到您自己的报告系统,您的实现可以调用默认的 RedBoxHandler
,可以通过调用来获取它
RedBoxHelper::CreateDefaultHandler(Host);
设置 RedBoxHandler
的示例,该处理程序将错误报告给外部系统,并在应用程序中显示默认的 RedBox
体验
class MyRedBoxHandler : IRedBoxHandler
{
MyRedBoxHandler(IRedBoxHandler defaultHandler) {
innerHandler = defaultHandler;
}
public void ShowNewError(IRedBoxErrorInfo info, RedBoxErrorType type) {
// Do not report non-fatal errors (optional)
if (type != RedBoxErrorType.JavaScriptSoft)
ReportErrorToMyErrorReportingSystem(info, type);
// Display errors in app if the instance is running with DevSupportEnabled
if (innerHandler.IsDevSupportEnabled)
innerHandler.ShowNewError(info, type);
}
public bool IsDevSupportEnabled {
get;
}
{
// The default handler will return true if the instance has DevSupport turned on
// But if you want to record error information in released versions of your app
// Then you should return true here, so that all errors get reported.
return true;
}
public void UpdateError(IRedBoxErrorInfo info) {
if (innerHandler.IsDevSupportEnabled)
innerHandler.UpdateError(info);
}
public void DismissRedBox() {
if (innerHandler.IsDevSupportEnabled)
innerHandler.DismissRedBox();
}
private IRedBoxHandler innerHandler;
}
RegisterMyRedBoxHandler()
{
Host.InstanceSettings.RedBoxHandler = new MyRedBoxHandler(RedBoxHelper.CreateDefaultHandler(Host));
}
属性
IsDevSupportEnabled
readonly
bool IsDevSupportEnabled
此属性将控制是否应将错误报告给处理程序。如果此属性返回 false,则不会调用 ShowNewError
和 UpdateError
。
方法
DismissRedBox
void DismissRedBox
()
ShowNewError
void ShowNewError
(IRedBoxErrorInfo
info, RedBoxErrorType
type)
当首次发生错误时调用此方法。
UpdateError
void UpdateError
(IRedBoxErrorInfo
info)
当关于错误的更新信息已解决时调用此方法。对于 JavaScript 错误,如果能够解析源映射信息以提供更有用的调用堆栈,则会调用此方法。