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

187
Views
¿Cómo puedo usar referencias múltiples para matrices anidadas de elementos con ganchos, o de cualquier otra manera?

En primer lugar, encontré la solución aquí, que funciona muy bien con una sola matriz de elementos. Pero mi pregunta es sobre las matrices anidadas de componentes. Por ejemplo:

 const { useRef, useState, useEffect } = React; const arr1 = [A, B, C] const arr2 = [1, 2, 3] const App = () => { const popoverRefs = useRef([]); return ( <div> {arr1.map((parentItem, index) => { return( <div> A Parent Element {parentItem.label} {arr2.map((childItem, index2) => { return ( <div ref={????}> A Child Element {childItem.label} </div> ) })} </div> ) })} </div> ); }; ReactDOM.render( <App />, document.getElementById("root") );

En este ejemplo, ¿cómo puedo usar useRef o createRef para obtener la referencia para el hijo de cada padre por separado, de modo que pueda usar esas referencias para anclar otra vista, por ejemplo, una ventana emergente?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Hay muchas otras formas en que manejo el mismo caso usando el objeto

 popoverRefs.current will look like { 0: [], 1: [], 2: [], }; 

 const {useRef, useState, useEffect} = React; const arr1 = [A, B, C]; const arr2 = [1, 2, 3]; const App = () => { const popoverRefs = useRef( arr1.reduce((result, current, currentIndex) => { result[current] = []; return result; }, {}), ); return ( <div> {arr1.map((parentItem, index) => { return ( <div> A Parent Element {parentItem.label} {arr2.map((childItem, index2) => { return ( <div ref={ref => (popoverRefs.current[index][index2] = ref)}> A Child Element {childItem.label} </div> ); })} </div> ); })} </div> ); }; ReactDOM.render(<App />, document.getElementById('root'));

about 4 years ago · Juan Pablo Isaza Report

0

Puede extraer el niño en un componente separado y crear la referencia allí.

 const { useRef, useState } = React; const arr1 = ["A", "B", "C"]; const arr2 = [1, 2, 3]; const Child = ({ childItem }) => { const liRef = useRef(); const handleClick = () => { liRef.current.classList.toggle("highlight"); }; return ( <div ref={liRef}> A Child Element {childItem}{" "} <button onClick={handleClick}>Highlight</button> </div> ); }; const App = () => { return ( <div> {arr1.map((parentItem, index) => { return ( <div key={index}> <strong>A Parent Element {parentItem}</strong> {arr2.map((childItem, index2) => { return <Child childItem={childItem} key={index2}></Child>; })} </div> ); })} </div> ); }; const root = ReactDOM.createRoot(document.getElementById("root")); root.render( <React.StrictMode> <App /> </React.StrictMode> );
 .highlight { background: yellow; color: red; }
 <script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script> <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script> <div id="root"></div>

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