Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

192
Views
No puedo leer propiedades de indefinido (leyendo 'mapa') No puedo usar mi variable de nuevo

Me había confundido con este tipo de error a pesar de que había usado los productos de autovariable para mostrar todos mis productos, pero cuando intento usarlo nuevamente, no puedo detectarlo. Obtuve esa variable llamando a Axios por redux. por qué no lo sabía: así que este es mi código:

 import React, {useEffect} from "react"; import Product from "../components/Product"; import LoadingBox from "../components/LoadingBox"; import AlertBox from "../components/AlertBox"; import {useSelector, useDispatch} from "react-redux"; import {listProducts} from "../actions/productAction"; const HomePage = () => { const dispatch = useDispatch(); useEffect(()=> { dispatch(listProducts()); }, [dispatch]) const productsList = useSelector((state) => state.productsList); const {products, loading, error} = productsList; console.log(products) const categories = products.map((x)=> x.subCategory); console.log(categories) return ( <div> {loading? (<LoadingBox></LoadingBox>):error? (<AlertBox variant="danger" >{error}</AlertBox>):( <div className="row center" > { products.map((product) => ( <Product key={product._id} product={product} ></Product> ))} </div> )} </div> ) }; export default HomePage;
about 4 years ago · Santiago Gelvez
3 answers
Answer question

0

La función map solo se usa para iterar una matriz. Si se envía cualquier otro tipo de datos a los productos, use la siguiente excepción para no producir un bloqueo o error.

Sintaxis

 array.map((item, index) => { //code })

Su representación

 <div className="row center" > {products?.map((product) => ( <Product key={product._id} product={product} ></Product> ))} </div>
about 4 years ago · Santiago Gelvez Report

0

Apuesto a que inicializa su tienda state.productsList con null , por lo tanto, debe verificar si los productos realmente se obtuvieron o proporcionar un valor predeterminado para productsList .

 const categories = products?.length ? products.map(({subCategory})=> subCategory) : [];
about 4 years ago · Santiago Gelvez Report

0

Lo que te falta es un cortocircuito. Cuando usa redux thunk como un middleware o cualquier forma asincrónica de obtener los datos del servidor, entonces debe asegurarse de que se encuentre cada nodo del objeto que desea representar. Se debe a que en los primeros milisegundos los datos aún no se han obtenido, pero la reacción tiende a generar los datos que, obviamente, serán nulos o indefinidos, ya que los datos aún no se han obtenido.

Esto se puede resolver de dos maneras diferentes con un cortocircuito.

1. Pase el nodo más profundo o asegúrese de que la longitud de los productos no sea 0 pasándolo en una matriz de dependencia como:

 useEffect(()=> { dispatch(listProducts()); }, [dispatch,products?.length])

2.

 {products?.products.map((product) => ( <Product key={product._id} product={product} ></Product> ))}

para obtener más referencias, puede consultar: evaluación de cortocircuitos en javascript

about 4 years ago · Santiago Gelvez Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!