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

166
Vistas
El elemento secundario funcional de React no se volverá a renderizar cuando cambien los accesorios

Estoy pasando una matriz de objetos a un elemento secundario como accesorios, y quería que el componente secundario se volviera a representar cuando cambia la matriz, pero no es así:

padre:

 export default function App() { const [items, setItems] = useState([]); const buttonCallback = () => { setItems([...items, { text: "new item" }]); }; return ( <div className="App"> <h1>Items list should update when I add item</h1> <button onClick={buttonCallback}>Add Item</button> <Items /> </div> ); }

niño:

 const Items = ({ itemlist = [] }) => { useEffect(() => { console.log("Items changed!"); // This gets called, so the props is changing }, [itemlist]); return ( <div className="items-column"> {itemlist?.length ? itemlist.map((item, i) => <Item key={i} text={item.text + i} />) : "No items"} <br /> {`Itemlist size: ${itemlist.length}`} </div> ); };

Encontré esta pregunta con el mismo problema, pero es para componentes de clase, por lo que la solución no se aplica a mi caso.

Demostración de espacio aislado

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

0

  <Items propsname={data} />
about 4 years ago · Juan Pablo Isaza Denunciar

0

const buttonCallback = () => { setItems([...items, { text: "new item" }]); };

pero deberías ponerlo como:

 const buttonCallback = () => { setItems([...items, { text: "new item", id: Date.now() }]); };

Porque no se recomienda usar el índice como clave para reaccionar niños. En su lugar, puede utilizar la fecha real con esa función. Esa es la clave para que React sepa que los niños han cambiado.

 itemlist.map((item) => <Item key={item.id} text={item.text} />)
about 4 years ago · Juan Pablo Isaza Denunciar

0

Intente a continuación: está agregando una matriz como una dependencia, para reconocer el cambio en la variable, debe hacer una copia profunda o cualquier otra cosa que indique que useEffect obj es realmente diferente. `

 const Items = ({ itemlist = [] }) => { const [someState,someState]=useState(itemlist); useEffect(() => { someState(itemlist) }, [JSON.stringify(itemlist)]); return ( <div className="items-column"> {someState?.length ? someState.map((item, i) => <Item key={i} text={item.text + i} />) : "No items"} <br /> {`Itemlist size: ${someState.length}`} </div> ); };
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