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

60
Vistas
Identifique y muestre cuántos niños están desbordando un contenedor en React

Estoy creando un menú desplegable con selección única y múltiple, y estoy atascado en una función que quiero implementar para la variante de selección múltiple, pero no sé cómo continuar.

Como referencia, aquí está la implementación completa de Dropdown. https://codesandbox.io/s/dropdown-ytm4yy

En src/dropdown/components/multi-value-container.jsx , es donde tengo el contenedor desplegable de selección múltiple. Aquí está su código completo.

 import { useState, useRef, useLayoutEffect } from "react"; export const MultiValueContainer = ({ selected }) => { const [isOverflowing, setIsOverflowing] = useState(false); const selectedCount = selected.length; const ref = useRef(); useLayoutEffect(() => { const parentRect = ref.current?.getBoundingClientRect(); const parentWidth = parentRect.width; const childNodes = [...ref.current.childNodes]; const childNodesWidth = childNodes.map( (child) => child.getBoundingClientRect().width ); const childNodesWidthSum = childNodesWidth.reduce((acc, sum) => acc + sum); childNodesWidthSum > parentWidth ? setIsOverflowing(true) : setIsOverflowing(false); }, [selected]); return ( <div ref={ref} className="react-dropdown__multi-value-container"> {!isOverflowing && selected.map((option) => ( <div key={option.value} className="react-dropdown__multi--selected"> {option.label} </div> ))} {isOverflowing && ( <div className="react-dropdown__multi--selected max-width"> {selectedCount} items selected </div> )} </div> ); };

Lo que estoy tratando de hacer es esto: si el ancho total de los niños seleccionados es mayor que el del contenedor (le di una ref ), entonces quiero mostrar x items selected .

Implementé algo que funciona (verifique useLayoutEffect , pero con fallas, porque, por ejemplo, si selecciono una cantidad de elementos y se desbordan, los x items selected se muestran como se esperaba, pero en la siguiente selección, ref.current.childNodes buscará y verificará que solo tengo un chip renderizado (los x elementos seleccionados), cuyo ancho no excede el ancho del contenedor, por lo que continuará agregando otro.

¿Cómo puedo arreglar esto?

about 4 years ago · Juan Pablo Isaza
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