Sé que ya hay un par de preguntas similares a esta, pero ninguna de las soluciones proporcionadas me funciona. Estoy enviando una acción en mi componente React Native, pero cuando intento acceder al estado después con useSelector, sigue siendo solo el estado anterior, no el actualizado.
Mi componente:
const userSettings = useSelector((state: any) => state.user.settings); const loadUserSettings = async () => { await dispatch(userActions.fetchUserSettings()); } const checkUserEnabled = async () => { await loadUserSettings(); // The old state shows here rather than the updated one console.log(userSettings.enabled) }y este es mi reductor:
const initialState = { settings = UserSettings, }; export default (state = initialState, action) => { switch (action.type) { case SET_USER_SETTINGS: return { ...state, settings: action.settings, }; default: return state; } };userSettings es un cierre obsoleto , ya que Nicolas sugirió que no puede enviar una acción y esperar que el valor del estado haya cambiado inmediatamente porque se crea un nuevo estado después de cada acción y su función actual todavía usa el valor anterior del estado. Cuando el componente se vuelve a renderizar, se renderizará con el nuevo valor de estado.