Estoy usando la siguiente solicitud de publicación de búsqueda para crear un elemento en mi base de datos. Estoy tratando de usar react-query para detectar el error arrojado por la solicitud.
export function createItem(id, body, token) {
fetch(`${API_URL}/${id}/items`, {
method: 'post',
headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` },
body: JSON.stringify(body)
})
.then(res => {
if (res.ok) {
return res.json()
}
console.log(res.status)
throw new Error("Error creating review")
})
.catch((err) => console.log(err))
}
Tengo la mutación establecida así:
const mutation = useMutation(() => {
return createItem(props.item.id, item, token)
})
Y se llama con:
<Button disabled={!valid} onPress={() => mutation.mutate()}>
Submit
</Button>
Yo uso esta lógica para mostrar el error:
{
mutation.isError && <Text>{mutation.error.message}</Text>
}
Veo los createItem
errores de función con un código de estado 400, que es lo que espero, pero reaccionar-consulta no se establece isError
en verdadero. En cambio isSuccess
es cierto. ¿Estoy manejando mal el error de alguna manera?
Solución del problema
Desde los documentos de consulta de reacción, devuelven una promesa a la mutación, así que intente cambiar su función createItem
a lo siguiente:
export function createItem(id, body, token) {
// return the fetch as a promise
return fetch(`${API_URL}/${id}/items`, {
method: 'post',
headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` },
body: JSON.stringify(body)
})
// remove then and catch here
No hay comentarios:
Publicar un comentario