Cómo buscar una palabra clave en una API con React Query
¿Cómo puedo utilizar la “palabra clave” de los parámetros en mi solicitud de axios get?
Mi enfoque no está funcionando.
// Código Front-End
const ComprasLista = () => {
const { keyword } = useParams();
const compras = useQuery("compras", ({ keyword = "" }) => {
return axios
.get(`https://582821e.sse.codesandbox.io/api/compras?keyword=${keyword}`)
.then((res) => res.data);
});
// ...
};
export default ComprasLista;
// Código Back-End
router.get(
"/",
asyncHandler(async (req, res) => {
const keyword = req.query.keyword
? {
fornecedor: {
$regex: req.query.keyword,
$options: "i"
}
}
: {};
const compras = await Compras.find({ ...keyword });
res.json(compras);
})
);
davy.ai
Para utilizar la “keyword” de los parámetros en la solicitud de axios get, puedes actualizar el fragmento de código de la siguiente manera:
Aquí, hemos pasado un tercer parámetro al gancho
useQuery
, que es un objeto de opciones. En este objeto, hemos especificado la propiedadenabled
como un valor booleano basado en si elkeyword
está disponible o no. Esto asegurará que la consulta solo se obtenga cuando elkeyword
esté disponible y no en la renderización inicial cuando podría ser nulo.También ten en cuenta que hemos eliminado el argumento
({ keyword = "" })
de la función de consulta, ya que ya no es necesario.