Estoy creando una aplicación Quiz usando React y estoy obteniendo las preguntas como una matriz y manteniendo los estados:
Ahora, el problema es que cuando elijo una opción y hago clic en 'Guardar e ir a la siguiente pregunta', se activan los siguientes eventos:
Ahora, el problema es que es muy importante que estos eventos se activen en secuencia; de lo contrario, cuando pasemos a la siguiente pregunta, incluso si la hemos respondido y volvemos a ella, el estado #3 no se actualiza correctamente.
En mi código, dado que estoy usando ganchos de reacción, la actualización de estado es asíncrona y no obtengo la secuencia correcta requerida. La siguiente función de pregunta se activa antes de que se actualice la matriz con la información sobre todas las preguntas. Leí muchas respuestas, pero todas sugerían usar Effect Hook. Pero el problema principal es que no tengo un caso de uso generalizado para setStates. Por ejemplo, no iré a la siguiente pregunta necesariamente después de que se actualice la matriz total y esta es una situación particular en la que necesito activar goToNextQuestion() después de que se actualice el estado #1. ¿Qué debo hacer para lograr mi objetivo requerido?
Puede tener un solo enlace useState que tenga un objeto con todos esos estados. Al actualizar, puede actualizarlos todos a la vez.
const [myState, mySetState] = useState({questions:[],current:{},selected:0}
Luego, al actualizar, copie el valor anterior, destrúyalo y reemplácelo con la nueva información
mySetState({...myState, current:newValue, selected:newSelected})