Javascript 反冲无法处理异步选择器的错误
反冲允许用户在异步选择器中抛出错误,请参阅以了解更多信息 “”和“useRecoilValueLoadable()”都可以用来处理aysnc选择器的错误,但在我测试它们时,它们都不能正常工作 下面是我使用“useRecoilValueLoadable()的代码”Javascript 反冲无法处理异步选择器的错误,javascript,reactjs,asynchronous,selector,recoiljs,Javascript,Reactjs,Asynchronous,Selector,Recoiljs,反冲允许用户在异步选择器中抛出错误,请参阅以了解更多信息 “”和“useRecoilValueLoadable()”都可以用来处理aysnc选择器的错误,但在我测试它们时,它们都不能正常工作 下面是我使用“useRecoilValueLoadable()的代码” 从'recoil'导入{RecoilRoot,selector,useRecoilValueLoadable}; 常量异步错误=选择器({ 键:“asyncError”, get:async()=>{抛出新错误(“测试错误”);} }
从'recoil'导入{RecoilRoot,selector,useRecoilValueLoadable};
常量异步错误=选择器({
键:“asyncError”,
get:async()=>{抛出新错误(“测试错误”);}
});
功能测试(){
const loadable=useRecoilValueLoadable(异步错误);
返回(
{loadable?.state=='hasrerror'?“有错误”:“无错误”}
);
}
函数App(){
返回(
);
}
导出默认应用程序代码>React中没有内置的ErrorBoundary
组件。例如,您必须自己提供一个或使用一个库
然后您还必须使用React.suspend
,就像您提到的文档一样
export default function App() {
return (
<RecoilRoot>
<ErrorBoundary FallbackComponent={Fallback}>
<React.Suspense fallback={<div>loading...</div>}>
<Test />
</React.Suspense>
</ErrorBoundary>
</RecoilRoot>
);
}
导出默认函数App(){
返回(
);
}
您的选择器也不是异步的。错误将立即抛出
查看一个工作示例。
要了解有关ErrorBoundary
组件函数的更多信息,您应该阅读。在get async函数中使用此函数异步抛出。return new Promise((resolve,reject)=>{//使用setTimeout(()=>resolve(“delayed no error”),3000)下面的一行;setTimeout(()=>reject(“因错误而延迟”),2000);抛出新错误(“测试错误”);};