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

127
Vistas
Cómo filtrar la matriz para que coincida con el valor de los parámetros con reaccionar

Quería crear una aplicación web de comercio electrónico usando react-bootstrap. Quiero que la página muestre un artículo diferente según la categoría, por lo que si la URL es producto/ropa de hombre, quiero filtrar mi conjunto y mostrar solo el producto que tiene la misma categoría, que es ropa de hombre (mi ruta: producto/: categoría). Ya intenté filtrar mi matriz usando el método .filter pero no funcionó, todavía muestra todos los productos de varias categorías, ¿cómo puedo solucionarlo?

Página de productos categorizados:

 const ProductList = () => { const { category } = useParams() const[productList, setProductList]= useState(); useEffect(() =>{ axios.get(`https://fakestoreapi.com/products`).then(res => { const products = res.data; setProductList(products); var filteredCategory = productList.filter((productList) =>productList.category === {category}) }) }, []); console.log(productList) return ( <> <Row> <h1> This is {category} paged</h1> {productList && productList.map(product =>{ const {id, title, price, category,description,image} = product; return( <Col lg={3} className="d-flex"> <Card key={id} className="flex-fill productlist"> <Card.Img variant="top" src={image} /> <Card.Body> <Card.Title>{title}</Card.Title> <Card.Text>{category}</Card.Text> <Card.Text> Current Price: {price} </Card.Text> <Button variant="primary">Add to cart</Button> </Card.Body> </Card> </Col> ) })} </Row> </> ) } export default ProductList
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

En la función de filtro que ha utilizado, intente escribirlo como

 productList.filter((product) => product.category === category)
  1. Cuando lo escribe como {categoría}, se crea un objeto con categoría clave y el valor como el valor real. Por ejemplo, si el valor de la categoría es zapatos, creará un objeto, {categoría: "zapatos"}.
  2. También debe agregar la categoría en la dependencia useEffect, para volver a obtener productos cada vez que se actualiza la categoría.
about 4 years ago · Juan Pablo Isaza Denunciar

0

Intenta deshacerte del {} alrededor de la variable de categoría en la función de filtro. La función de filtro no está dentro de la declaración de devolución y, por lo tanto, js simple (no jsx).

Además, nunca usa la matriz que contiene los productos filtrados. Sugeriría filtrar los productos que obtiene de axios, tomar los productos filtrados y ponerlos en estado con setProductList.

No pude probar esto ya que estoy en el móvil, pero pruébalo.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Primero, agregue una dependencia a su UseEffect y luego elimine el corchete dentro del filtro.

 useEffect(() => { async function getByCategory(){ const req = await fetch(URL): const res = await req.json(); const filter = res.filter((item) => item.category === category); setProductList(filter); } // check if params exits if(category){ getByCategory(); } }, [category]);
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