Tengo una función de fábrica que devuelve un gancho de mutación React Query, como este:
function useMutationFactory(mutationFunction: (axios: Axios) => (params: any) => any) { const baseURL = getBaseURL(); // Retrieves the Base URL (this is dynamic) const axios = useAxios({baseURL}); // Creates an Axios instance with the URL ... return useMutation(mutationFunction(axios)); } La función de mutación habitual para useMutation es (params: any) => any , tengo que curry para pasar axios al usuario. Quiero ver si es posible tener axios dentro de la función de mutationFunction sin curry.
La idea que tengo es usar prototipos y escribir funciones de contenedor para cada método http de axios. Algo como esto:
const Mutation = { queryGet: (...params: Parameters<Axios["get"]>) => { const axios = this.prototype.axios; // Not sure about this part return axios.get(...params); } }La función de mutación de los usuarios sería algo como esto:
const mutation = useMutationFactory((params) => { const res = Mutation.queryGet("/"); }); Estoy atascado en obtener axios para Mutation . Idealmente, axios no se pasa al usuario, por lo que tengo que configurar axios dentro useMutationFactory . No puedo usar apply() o call() , ya que el usuario tendría que llamar eso (supongo). Todavía soy muy nuevo en la creación de prototipos de objetos, ¡así que agradecería cualquier sugerencia o ayuda!
Bueno, haga que la función haga algo con una variable en el ámbito global, actualice/cambie la variable en el ámbito global al valor que desea pasar a la función, luego llame a la función para que lea el valor actualizado de la variable.
Estoy en el cajero automático de mi teléfono; de lo contrario, daría un ejemplo de código. Espero que esto ayude.