从 usePreloadedQuery 捕获错误
Catch errors from usePreloadedQuery
我有这段代码,我想捕获 usePaginationFragment 使用的查询中发生的错误。
现在发生的是当后端出现问题时,data.queryName returns 为 null,并且无法知道错误。
问题是发生错误时如何接收错误?
function MyPagination(){
return (
<ErrorBoundary>
<Suspense fallback={"loading..."} >
<PaginationLoadable
preloadedQuery={preloadedQuery}
query={graphql`...`}
/>
</Suspense>
</ErrorBoundary>
)
}
function PaginationLoadable(this: never, props: PaginationLoadableProps){
const preloadedData = usePreloadedQuery<any>(props.query, props.preloadedQuery);
const {data} = usePaginationFragment(
props.fragment,
preloadedData
);
console.log(data[ /*queryName*/ ] === null)
}
谢谢
我是这样做的,它必须像这样在 NetworkLayer 函数中抛出一个错误:
new Environment({
network: Network.create(
function fetch(operation, variables) {
return (
Axios
.post(
'*API_NEDPOINT*',
{
query: operation.text,
variables
}
)
.then(
response => {
if(response.data.errors){
const er: any = new Error('ServerError');
er.data = response.data.data;
er.errors = response.data.errors;
return Promise.reject(er);
}
return response.data;
}
)
);
}
),
store
});
我有这段代码,我想捕获 usePaginationFragment 使用的查询中发生的错误。 现在发生的是当后端出现问题时,data.queryName returns 为 null,并且无法知道错误。 问题是发生错误时如何接收错误?
function MyPagination(){
return (
<ErrorBoundary>
<Suspense fallback={"loading..."} >
<PaginationLoadable
preloadedQuery={preloadedQuery}
query={graphql`...`}
/>
</Suspense>
</ErrorBoundary>
)
}
function PaginationLoadable(this: never, props: PaginationLoadableProps){
const preloadedData = usePreloadedQuery<any>(props.query, props.preloadedQuery);
const {data} = usePaginationFragment(
props.fragment,
preloadedData
);
console.log(data[ /*queryName*/ ] === null)
}
谢谢
我是这样做的,它必须像这样在 NetworkLayer 函数中抛出一个错误:
new Environment({
network: Network.create(
function fetch(operation, variables) {
return (
Axios
.post(
'*API_NEDPOINT*',
{
query: operation.text,
variables
}
)
.then(
response => {
if(response.data.errors){
const er: any = new Error('ServerError');
er.data = response.data.data;
er.errors = response.data.errors;
return Promise.reject(er);
}
return response.data;
}
)
);
}
),
store
});