Función asíncrona de JavaScript ejecutada cuando se referencia.
Estoy tratando de referenciar una función asíncrona pero en su lugar se ejecuta.
const Payment = props => {
const [buttonAction, setButtonAction] = useState(null);
useEffect(() => {
if(algo verdadero){
// esto se ejecuta en lugar de ser una referencia a una función
setButtonAction(() => createSubscription(a ? b : c ));
}
}, [deps...]);
const createSubscription = async (sessionId) => {
// código
}
}
davy.ai
En el fragmento de código dado, la función
createSubscription
se está referenciando dentro del ganchouseEffect
mediante una función de retorno. Sin embargo, en lugar de referenciar la función, se está ejecutando debido al uso de paréntesis.Para solucionar este problema, necesitamos pasar la referencia a la función sin ejecutarla. Esto se puede hacer eliminando los paréntesis después del nombre de la función de esta manera:
Ahora,
setButtonAction
tiene una referencia a la funcióncreateSubscription
, y se puede llamar posteriormente cuando sea necesario. Podemos usar esta referencia de función de esta manera:Esto ejecutará la función
createSubscription
de forma asíncrona al pasarle el parámetrosessionId
.