¿El comportamiento normal y esperado de un reductor de reacción es ignorar las actualizaciones de estado de alguna manera "recuperada"?
Implementé un refrigerio donde puedes ver que con 2 actualizaciones de estado instantáneas a través de reducer, la pantalla solo se muestra una vez.
https://snack.expo.dev/oXd96Nbq8
Verifique los registros de la consola. ¿Por qué está pasando esto?
Esto es realmente molesto, ya que no puedo ejecutar efectos secundarios ya que no se detecta la primera actualización de estado. ¿Algunas ideas?
import React, { useReducer } from 'react'; import Constants from 'expo-constants'; const initialState = {count: 0}; function reducer(state, action) { switch (action.type) { case 'toggle': const newState = { count: state.count === 1 ? 0 : 1 }; console.log("Expected state", newState); return newState; } } export default function App() { const [state, dispatch] = useReducer(reducer, initialState); console.log("Rendered state", state); const handleOnPress = () => { dispatch({type: 'toggle'}); // 1 expected to be rendered... but not rendered because of the rollback? try { throw new Error("Forced error..."); } catch(err) { console.log(err); // Rollback dispatch({type: 'toggle'}); // 0 expected to be rendered... } } return ( <> Count: {state.count} <button onClick={handleOnPress}>toggle</button> </> ); }