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

149
Views
Cómo acceder a un componente secundario (desde props.children) ref usando componentes funcionales

Estoy tratando de usar un IntersectionObserver.observe() en cada componente secundario de un componente principal, pero para eso necesito sus referencias.

Así es como se ve mi componente principal:

 // App component <Nav> <Section ref={useRef(null)} {/* other props */} /> <Section ref={useRef(null)} {/* other props */} /> <Section ref={useRef(null)} {/* other props */} /> <Section ref={useRef(null)} {/* other props */} /> </Nav>

Necesito el componente Nav para acceder a la referencia de cada componente de la Section . Creé el observador y obtuve todos los elementos secundarios en una lista:

 // Nav component const observer = new IntersectionObserver(observerCallback, options); const sectionList: ReactElement<SectionProps>[] = []; childrenToList(props.children, sectionList); return ( <> <nav className="nav"> {/* ... */} </nav> {sectionList} </> )
 // Section component const Section = React.forwardRef<HTMLDivElement, SectionProps>((props, ref) => { return ( <section ref={ref} {/* other attributes */}>{props.children}</section> ); });

Esto es lo que está haciendo la función childrenToList :

 function childrenToList(children: ReactNode, listToPush: any[]) { React.Children.forEach(children, (element) => { if (!React.isValidElement(element)) return; listToPush.push(element); }); }

Entonces necesito una forma de hacer algo así (no un código de trabajo real):

 sectionList.forEach((section) => {observer.observe(section.ref.current)})

El problema es que no pude encontrar una manera de acceder a la ref. Ya intenté tener la referencia como accesorio, pero decía que su valor es nulo, o si lo usé con una declaración if (como

 const ref = section.props.ref if (ref) { observer.observe(ref.current) }

) la página simplemente no se procesaría y permanecería en blanco.

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