();
const { data, error: getOneError, refetch } = useGetOne('posts', { id: 1 });
const [create, { isPending }] = useCreate();
const handleClick = () => {
setError(undefined);
create(
'posts',
{
data: { title: 'Hello World' },
},
{
onSuccess: () => setSuccess('success'),
onError: e => setError(e),
}
);
};
return (
<>
{getOneError ? (
{getOneError.message}
) : (
- title
- {data?.title}
)}
{error && {error.message}
}
{success && {success}
}
{isMutating !== 0 && mutating
}
>
);
};
export const WithMiddlewaresSuccess = ({ timeout = 1000 }) => {
const posts: { id: number; title: string; author: string }[] = [];
const dataProvider = {
getOne: (resource, params) => {
return new Promise((resolve, reject) => {
const data = posts.find(p => p.id === params.id);
setTimeout(() => {
if (!data) {
reject(new Error('nothing yet'));
}
resolve({ data });
}, timeout);
});
},
create: (resource, params) => {
return new Promise(resolve => {
setTimeout(() => {
const post = { id: posts.length + 1, ...params.data };
posts.push(post);
resolve({ data: post });
}, timeout);
});
},
} as any;
return (
);
};
const WithMiddlewaresSuccessCore = () => {
const isMutating = useIsMutating();
const [success, setSuccess] = useState();
const { data, error, refetch } = useGetOne('posts', { id: 1 });
const [create, { isPending }] = useCreate(
'posts',
{
data: { title: 'Hello World' },
},
{
// @ts-ignore
getMutateWithMiddlewares: mutate => async (resource, params) => {
return mutate(resource, {
...params,
data: { title: `${params.data.title} from middleware` },
});
},
}
);
const handleClick = () => {
create(
'posts',
{
data: { title: 'Hello World' },
},
{
onSuccess: () => setSuccess('success'),
}
);
};
return (
<>
{error ? (
{error.message}
) : (
- title
- {data?.title}
)}
{success && {success}
}
{isMutating !== 0 && mutating
}
>
);
};
export const WithMiddlewaresError = ({ timeout = 1000 }) => {
const posts: { id: number; title: string; author: string }[] = [];
const dataProvider = {
getOne: (resource, params) => {
return new Promise((resolve, reject) => {
const data = posts.find(p => p.id === params.id);
setTimeout(() => {
if (!data) {
reject(new Error('nothing yet'));
}
resolve({ data });
}, timeout);
});
},
create: () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error('something went wrong'));
}, timeout);
});
},
} as any;
return (
);
};
const WithMiddlewaresErrorCore = () => {
const isMutating = useIsMutating();
const [success, setSuccess] = useState();
const [error, setError] = useState();
const { data, error: getOneError, refetch } = useGetOne('posts', { id: 1 });
const [create, { isPending }] = useCreate(
'posts',
{
data: { title: 'Hello World' },
},
{
// @ts-ignore
getMutateWithMiddlewares: mutate => async (resource, params) => {
return mutate(resource, {
...params,
data: { title: `${params.data.title} from middleware` },
});
},
}
);
const handleClick = () => {
setError(undefined);
create(
'posts',
{
data: { title: 'Hello World' },
},
{
onSuccess: () => setSuccess('success'),
onError: e => setError(e),
}
);
};
return (
<>
{getOneError ? (
{getOneError.message}
) : (
- title
- {data?.title}
)}
{error && {error.message}
}
{success && {success}
}
{isMutating !== 0 && mutating
}
>
);
};