Ahora he visto las otras preguntas de este tipo y probé las soluciones y no funcionó.
Entonces, ¿cuál es el problema?
Estoy usando redux despachando los mismos datos, un objeto con una etiqueta y un ID de usuario, luego pongo esos datos en un const pharmas con useSelector, cuando registro el const obtengo un objeto en la consola que contiene los datos despachados y eso está bien.
Ahora, el problema es que cuando trato de iniciar sesión en pharmas.userID, no estoy definido por algún motivo.
Así es como se ve cuando lo registro normalmente en console.log(pharmas) y esto es JSON.stringify(pharmas)
¿Alguien puede explicar por qué no puedo leer la propiedad de undefined?
y ¿qué puedo hacer para extraer el ID de usuario ya que lo necesito para filtrar algunos datos?
¡Gracias por adelantado!
Aquí está el código, obteniendo datos y registrándolos
const pharmas = useSelector ((state) => state.pharmacies.filteredPharmacies) console.log('pharmas', pharmas)Envío de los datos:
const handleOnChange = (value) => { dispatch(getPharmacie(value)) console.log('HERE',value) };Así es como se ve el "valor" en la consola Exactamente como lo obtengo en pharmas :
Aquí está el reductor:
export function pharmacies( state = { pharmacies: [], selectedPharmacies: [], filterPharmacies: [] }, action ) { switch (action.type) { case SET_PHARMACIES_DATA: return { ...state, pharmacies: action.payload, }; case SET_PHARMACIE: return{ ...state, filterPharmacies: action.payload, } case GET_PHARMACIE: return{ ...state, filteredPharmacies: action.payload, } case SET_PHARMACIES:Usando el caso GET_PHARMACIE:
Pero cuando consola.log(pharmas.userID) obtengo el error indefinido.
Aquí está el GET_PHARMACIE en la tienda del estado de extensión redux
parece que está configurando una carga útil vacía en GET_PHARMACIE , no necesita enviar nada al recuperar datos en la tienda.
Una cosa que realmente me gusta hacer en mis proyectos es crear sistemáticamente un enlace personalizado para cada uno de mis "módulos". Así es como lidiaría con eso:
usePharmas : devuelve todas las acciones farmacéuticas usePharmasActions : devuelve cada acción disponible
dentro de su enlace, solo expone datos envueltos en useSelector y acciones envueltas con useDispatch .
ese código será más fácil de mantener y probar.