Es muy común que actualicemos
una variable de estado basada en el valor actual de ese estado.
Entonces, aprendamos ahora cuál es la mejor manera de hacerlo.
Y de hecho, estamos actualizando el estado en función de
el estado actual todo el tiempo aquí.
Así que aquí, por ejemplo, en dicho paso, damos el paso actual
y luego restar uno.
Y aquí lo mismo.
Entonces, aquí tomamos el estado actual abierto.
y alternarlo, básicamente.
Y a esto me refiero con la actualización basada en el estado.
sobre el estado actual.
Ahora, la forma en que lo estamos haciendo ahora
está funcionando bien, ¿verdad?
Nuestra aplicación funciona bien, pero ahora imaginemos que
Después de unos meses, volvemos a esta aplicación.
y luego queremos cambiar algo.
Entonces, digamos que queremos que esta función maneje la siguiente aquí.
avanzar dos veces.
Entonces, digamos que queremos establecer el estado del paso dos veces.
Entonces, nada nos impide hacerlo.
Entonces, podemos hacer esto una vez y duplicarlo.
Entonces, esto está perfectamente bien.
Podemos llamar a la misma función dos veces.
¿pero que? ¿Que pasa ahora?
Entonces, ¿qué crees que va a pasar?
cuando hago clic en siguiente ahora?
Entonces, en teoría, debería dar el paso,
que actualmente es uno, a la una, entonces dos,
y luego aquí debería hacer lo mismo
de dos a tres, ¿no?
Pero nuevamente, observe lo que sucede.
Entonces, solo actualizó el estado una vez.
Ahora, entraremos en detalles por qué sucede exactamente esto.
Pero por ahora, lo que necesito que sepas es
que no deberíamos actualizar según el estado
sobre el estado actual como este.
Entonces, la forma en que lo hemos estado haciendo.
En cambio, lo que deberíamos hacer es aprobar
en una función de devolución de llamada aquí.
Entonces, en lugar de un valor, pasamos una función,
que recibirá como argumento,
el valor actual del estado.
Entonces, eliminemos esto aquí y creemos una función,
y aquí simplemente crearé una función de flecha simple.
Y entonces como decía, esto recibirá, como insumo,
el valor actual del estado.
Ahora bien, existen múltiples convenciones sobre cómo
para llamar a este argumento.
Entonces, podríamos llamarlo nuevamente paso,
pero esto podría resultar un poco confuso.
Podemos llamarlo paso actual, por ejemplo, o simplemente S.
Y esto es lo que voy a hacer ahora.
Entonces, sólo una abreviatura.
Y entonces, aquí podemos hacer S menos uno, como antes.
Y ahora esto funcionará exactamente de la misma manera, ¿verdad?
Entonces, la vista aquí se actualizó de la misma manera que antes,
pero esto es un poco más correcto,
porque si hacemos esto aquí,
así que nuevamente, recibiendo el paso actual como entrada,
que simplemente llamamos S, pero podría llamarse cualquier cosa.
Y aquí volvemos a ese paso actual más uno.
y lo mismo aquí, más uno.
Y si ejecutamos esto nuevamente, entonces funciona.
Entonces, está actualizando el estado dos veces.
Entonces, empezó a la una, entonces, por lo tanto,
esta devolución de llamada aquí recibió el valor de uno,
y luego uno más uno eran dos.
Y luego aquí en el siguiente estado,
ese valor actualizado ya se pasó aquí
en esta devolución de llamada.
Y entonces tenemos dos más uno, lo que da tres.
Ahora bien, aquí realmente no queremos esto, por supuesto,
así que sólo queremos avanzar uno.
Pero para estar seguro para futuras actualizaciones,
Es una buena idea utilizar siempre una devolución de llamada como esta.
cuando queremos actualizar el estado según el valor actual
de ese estado.
Entonces, hagamos lo mismo aquí.
Así que aquí también estamos haciendo lo mismo.
Entonces, también estamos configurando este estado abierto basado
sobre el actual.
Entonces, llamémoslo S y luego cambiemos eso ahora, ¿verdad?
Y eso funciona maravillosamente.
Ahora, cuando no estamos configurando estados basados
en el estado actual, entonces, por supuesto, podemos simplemente pasar
en el valor como normal.
Entonces, tal como lo hicimos aquí, por ejemplo.
Entonces eso también pasa a veces.
Y entonces, en ese caso, no necesitamos devolución de llamada.
Luego, simplemente pasamos el nuevo valor de estado,
como lo hacemos aquí, y como también lo hemos hecho aquí anteriormente.
Nuevamente, en muchas situaciones, eso funcionaría bien.
Entonces, antes solo teníamos la S menos uno aquí.
y nada más y eso funcionó también.
Pero para estar seguro para futuras actualizaciones
o para trabajar con compañeros de trabajo, es mejor actualizar el estado
de una manera más segura como esta.
Y de ahora en adelante haré esto cada vez.
que actualizamos el estado en función del valor actual
del Estado.