Stack Overflow en español Asked by ignacio garcía on December 14, 2020
En mi juego de preguntas tengo 4 opciones, y si el id de la opción que el usuario clickea, coincide con el id de la respuesta correcta, necesito actualizar la puntuación. Sin embargo, para hacerlo tengo que usar el evento onClick. Pero ahí dentro no puedo usar condicionales porque así es JSX, por lo que hice una función y simplemente es llamada dentro del evento onClick.
Este es el código:
const correctAnswer= () => {
if(correct === index){ /* Esta condición solo checkea si es la opción correcta, no prestar atención*/
useDispatch(incrementCounter())
}
}
---------------------------------------------------------
return(
<button onClick={correctAnswer}>example</button>
)
Sin embargo, este código me da el siguiente error:
React Hook "useDispatch" is called in function "correctAnswer" which is neither a React function component or a custom React Hook function
La única solución que le encuentro es llamar al estado del reducer correspondiente en el componente donde el componente de opción es renderizado, sin embargo, esto le quita sentido al uso de redux ya que lo quiero aplicar para no tener que pasar tantos props por componente.
Desde ya muchas gracias!
Para utilizar cualquier hook de react, en este caso el hook "useDispatch" primero debes inicializar el hook dentro del componente de react y no dentro de sus funciones. Puedes probar modificando tu código de la siguiente manera:
const MyComponent = () => {
const dispatch = useDispatch(); //Nivel correcto para inicializar un hook
...
const correctAnswer = () => {
// Nivel incorrecto para inicializar un hook
if (correct === index) {
/* Esta condición solo checkea si es la opción correcta, no prestar atención*/
dispatch(incrementCounter());
}
};
...
};
Te comparto la siguiente liga con mas información: reactjs.org
Correct answer by Jesús Ochoa on December 14, 2020
1 Asked on December 23, 2020 by lizzp
1 Asked on December 23, 2020 by ibeth-carmona
1 Asked on December 22, 2020 by jalkhov
0 Asked on December 22, 2020 by verlyn-luna
1 Asked on December 21, 2020 by harvey66
0 Asked on December 21, 2020 by jose-ignacio-gonazlez
1 Asked on December 21, 2020 by alejandro-hernandez
2 Asked on December 21, 2020 by owo-ba
1 Asked on December 21, 2020 by candid-moe
1 Asked on December 21, 2020 by devinthe30s
1 Asked on December 21, 2020 by jorge-mp
0 Asked on December 20, 2020 by pedro-jer
0 Asked on December 20, 2020 by locura
2 Asked on December 20, 2020 by julin-taborda
1 Asked on December 18, 2020 by sundente
1 Asked on December 18, 2020 by rodrigo2324
Get help from others!
Recent Answers
Recent Questions
© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP