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

172
Views
¿Cómo desplazarse a un componente desde otro componente en React?

Tengo un formulario que, al enviarlo, muestra los resultados del formulario, pero lo que es más importante, se desplaza a un componente que muestra los resultados. Estoy atascado tratando de pasar árbitros y adelantar árbitros. Todas las demostraciones que he visto han sido de componentes en el mismo archivo. Mi configuración es la siguiente:

App.js contiene dos componentes Form.js , que envía el formulario, y Results.js , que muestra los resultados del envío del formulario. El componente Results.js está más abajo en la página, así que quiero desplazarme a ese componente una vez que el usuario haga clic en Entrar en el formulario.

Aquí hay uncodesandbox que demuestra mi configuración.

Aquí está el mismo código aquí:

 // App.js import "./styles.css"; import Form from "./Form"; import Results from "./Results"; export default function App() { return ( <> <Form /> <Results /> </> ); }
 // Form.js import { forwardRef, useState } from "react"; const Form = forwardRef(({ onScroll }, ref) => { const [name, setName] = useState(""); const onSubmit = (e) => { e.preventDefault(); onScroll(); }; return ( <form onSubmit={onSubmit} className="tall"> <input value={name} onChange={(e) => setName(e.target.value)} /> <button type="submit">Submit</button> </form> ); }); export default Form;
 // Results.js import { useRef } from "react"; export default function Results() { const resultsRef = useRef(); function handleScrollToResults() { resultsRef.current.scrollIntoView({ behavior: "smooth" }); } return ( <div onScroll={handleScrollToResults}> <h1>Results</h1> </div> ); }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Pocas cosas por corregir.

  1. El componente de Results debe reenviar la referencia, no al componente de Form .
 import { forwardRef } from "react"; const Results = forwardRef((props, ref) => { return ( <div ref={ref}> <h1>Results</h1> </div> ); }); export default Results;
  1. El componente de Form debe recibir la referencia a Results como accesorio ( resultRef ).
 import { useState } from "react"; const Form = ({ resultRef }) => { const [name, setName] = useState(""); const onSubmit = (e) => { e.preventDefault(); resultRef.current.scrollIntoView({ behavior: "smooth" }); }; return ( <form onSubmit={onSubmit} className="tall"> <input value={name} onChange={(e) => setName(e.target.value)} /> <button type="submit">Submit</button> </form> ); }; export default Form;
  1. El componente raíz debe crear la ref usando useRef y usarla como se muestra a continuación. Observe que Form está usando resultRef mientras que Results lo está instanciando.
 import "./styles.css"; import Form from "./Form"; import Results from "./Results"; import { useRef } from "react"; export default function App() { const resultRef = useRef(null); return ( <> <Form resultRef={resultRef} /> <Results ref={resultRef} /> </> ); }

Editar componente de desplazamiento (bifurcado)

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!