Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

275
Vistas
UseSelector en el retorno nativo de reacción indefinido pero la variable en redux se actualiza

Intenté usar UseSelector para obtener datos en un redux, pero siempre se devolvió sin definir, pero cuando intento iniciar sesión en console.log, la variable que quería obtener en redux se actualiza, pero cuando intento la consola, registro el useSelector, se devuelve indefinido

código redux:

 export const EXCHAHNGETOSECOND = 'EXCHANGETOSECOND' export const exchangetosecwork = (hour,minute,second) =>({ type:EXCHAHNGETOSECOND, payloadhourwork : hour, payloadminutework : minute, payloadsecondwork : second }) let initialState ={ resultWorkinSecond : 0 } export const mainReducer = (state=initialState, action) =>{ switch (action.type) { case EXCHAHNGETOSECOND: const hourTosecond = action.payloadhourwork * 3600 const minuteTosecond = action.payloadminutework * 60 const res = hourTosecond+minuteTosecond+action.payloadsecondwork state.resultWorkinSecond = res console.log(state.resultWorkinSecond); return state.resultWorkinSecond default: return state } } export default mainReducer

tienda redux:

 import { createStore } from "redux"; import mainReducer from "./redux"; import AsyncStorage from '@react-native-async-storage/async-storage'; import { persistStore, persistReducer } from 'redux-persist' const persistConfig={ key:'root', storage:AsyncStorage, }; const persistedReducer = persistReducer(persistConfig,mainReducer) export default() => { let store = createStore(persistedReducer) let persistor = persistStore(store) return{ store, persistor } }

Prueba de registro de myConsole:

 const resWorkinSec = useSelector((state)=>state.resultWorkinSecond) <Pressable onPress={()=>{ dispatch(exchangetosecwork(hour,minute,second)) console.log(resWorkinSec) }}>

[resultado de registro de consola 1

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Su reductor tiene múltiples errores:

  • hace una asignación, cambiando de estado. Esto no está permitido en los reductores de Redux heredados, pero solo en los Redux modernos que usan createSlice
  • return state.resultWorkinSecond incluso cambia la estructura de estado completa.

El código heredado correcto de Redux se vería así:

 export const mainReducer = (state=initialState, action) =>{ switch (action.type) { case EXCHAHNGETOSECOND: const hourTosecond = action.payloadhourwork * 3600 const minuteTosecond = action.payloadminutework * 60 const res = hourTosecond+minuteTosecond+action.payloadsecondwork return { ...state, resultWorkinSecond: res } default: return state } }

Dicho todo esto, este es un estilo antiguo de Redux que ya no recomendamos desde 2019. Es más complicado y propenso a errores. Y aproximadamente 4 veces el código Redux moderno sería. Modern Redux no usa switch..case reducers, ACTION_TYPES, lógica reductora inmutable (como necesitabas hacer aquí), createStore y similares.

Recomiendo encarecidamente que dejes lo que estás haciendo por un momento y sigas el tutorial oficial de Redux .

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda