hox
hox copied to clipboard
与umi 的 useRequest 一起使用时,捕获不到全局错误
当和umi的useRequest一起使用时,我在组件最外层配置了UseAPIProvider的onError属性,当接口500时,不执行onError的回调函数
// useUser.js
const useUser = () => {
const [userInfo, setUser] = useState();
const { run, loading } = useRequest('/api/user', {
manual: true
});
useEffect(() => {
run().then(user => setUser(user));
}, []);
return { userInfo, loading, run };
};
export default createModel(useUser);
// App.js
import { UseAPIProvider } from '@umijs/use-request';
const App = () => {
return (
<UseAPIProvider
value={{
onError: (e) => console.log(e)
}}
>
<Children />
</UseAPIProvider>
)
}
// Children.js
const Chidren = () => {
const user = useUser()
return <h1>Chidren</h1>
}
我直接使用useRequest是可以的捕获到500错误的
这个的确是预期行为,因为 hox 的状态是存在一个独立的组件树之中的,所以你在 App 组件中创建 UseAPIProvider 是不能捕获到报错的。
这个问题也许在 hox v2 中能得到解决,目前的临时方案是只能自己去处理报错
cc @brickspert
这个的确是预期行为,因为 hox 的状态是存在一个独立的组件树之中的,所以你在
App组件中创建UseAPIProvider是不能捕获到报错的。 这个问题也许在 hox v2 中能得到解决,目前的临时方案是只能自己去处理报错cc @brickspert
v2 这部分有什么解决思路吗?
暂时可以这样:https://zhuanlan.zhihu.com/p/205453249
https://codesandbox.io/s/stupefied-euler-jgq93?file=/src/CountBtn.js recoil 也能逻辑复用... 多一个atom