Querying Functions
The useFunctionsQuery
enables you to query a Callable Cloud Function as your render.
For example, lets assume we have a getProduct
Callable HTTPS Function deployed which accepts a product ID
and returns data. We can query the function and render the response:
import React from "react";
import { useFunctionsQuery } from "@react-query-firebase/functions";
import { functions } from "../firebase";
function Product({ id }: { id: number }) {
// Functions has a deployed `getProduct` callable function
const query = useFunctionsQuery(["product", id], functions, "getProduct", {
id,
});
if (query.isLoading) {
return <div>Loading...</div>;
}
return <h1>{query.data.name}</h1>;
}
- We first provide a Query Key.
- We provide the hook the exported
Functions
instance. - We provide the name of the Callable Function (in this case
getProduct
). - Data (request body) is provided to the function. This is optional.
HttpsCallableOptions
The 4th argument of the hook accepts an optional HttpsCallableOptions
argument which will be used when requested. For example we can increase the timeout of the request.
const query = useFunctionsQuery(
["product", id],
functions,
"getProduct",
{
id,
},
{
timeout: 10000,
}
);
React Query options
The 5th optional argument accepts options of the useQuery
hook,
allowing us handle things such as side effects.
const query = useFunctionsQuery(
["product", id],
functions,
"getProduct",
{
id,
},
{
timeout: 10000,
},
{
onSuccess(product) {
console.log("Fetched the product: ", product);
},
onError(error) {
console.error("Error fetching the product!", error);
},
}
);