Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反冲无法处理异步选择器的错误_Javascript_Reactjs_Asynchronous_Selector_Recoiljs - Fatal编程技术网

Javascript 反冲无法处理异步选择器的错误

Javascript 反冲无法处理异步选择器的错误,javascript,reactjs,asynchronous,selector,recoiljs,Javascript,Reactjs,Asynchronous,Selector,Recoiljs,反冲允许用户在异步选择器中抛出错误,请参阅以了解更多信息 “”和“useRecoilValueLoadable()”都可以用来处理aysnc选择器的错误,但在我测试它们时,它们都不能正常工作 下面是我使用“useRecoilValueLoadable()的代码” 从'recoil'导入{RecoilRoot,selector,useRecoilValueLoadable}; 常量异步错误=选择器({ 键:“asyncError”, get:async()=>{抛出新错误(“测试错误”);} }

反冲允许用户在异步选择器中抛出错误,请参阅以了解更多信息

“”和“useRecoilValueLoadable()”都可以用来处理aysnc选择器的错误,但在我测试它们时,它们都不能正常工作

下面是我使用“useRecoilValueLoadable()的代码”

从'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);抛出新错误(“测试错误”);};