Calling Functions
The useFunctionsCall
enables you to call a Callable Cloud Function on demand.
For example, lets assume we have a updateProduct
Callable HTTPS Function deployed which accepts a product ID
and data to update. Instead of calling this function as we render, we can instead call it as a mutation on demand.
import React from "react";
import { useFunctionsCall } from "@react-query-firebase/functions";
import { functions } from "../firebase";
function Product({ id }: { id: number }) {
const mutation = useFunctionsCall(functions, "updateProduct");
return (
<button
disabled={mutation.isLoading}
onClick={() => {
mutation.mutate({
id,
name: "New product name!",
});
}}
>
Update Product Name
</button>
);
}
The hook is built on top of the useMutation
hook.
HttpsCallableOptions
The 3rd 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 mutation = useFunctionsCall(functions, "updateProduct", {
timeout: 10000,
});
React Query options
The 4th optional argument accepts options of the useMutation
hook,
allowing us handle things such as side effects.
const mutation = useFunctionsCall(
functions,
"updateProduct",
{
timeout: 10000,
},
{
onSuccess() {
console.log("Product updated...");
},
onError(error) {
console.error("Failed to update product...", error);
},
onMutate(variables) {
console.log("Updating product with variables", variables);
},
}
);