Recoil 允许用户在异步选择器中抛出错误,请参阅其文档以了解更多信息。
“<ErrorBoundary/>”和“useRecoilValueLoadable()”都可以用来处理aysnc选择器的错误,但是在我测试的时候,它们都不能正常工作。
这是我使用“useRecoilValueLoadable()”的代码
import {RecoilRoot, selector, useRecoilValueLoadable} from 'recoil';
const asyncError = selector({
key: 'asyncError',
get: async() => { throw new Error("Test Error"); }
});
function Test() {
const loadable = useRecoilValueLoadable(asyncError);
return (
<h1>
{ loadable?.state === 'hasError' ? "Has error" : "No error" }
</h1>
);
}
function App() {
return (
<RecoilRoot>
<Test/>
</RecoilRoot>
);
}
export default App;
但是,最后的结果是
我尝试使用 <ErrorBoundary/> 也得到了同样的意外结果!反冲的版本是“0.2.0”。
大家好,请问如何解决这个问题?谢谢。