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

237
Views
React/nextjs obtiene datos al hacer clic en un botón, pero el botón está en un componente diferente

Tengo una función en la que obtiene los datos meteorológicos para la ubicación actual cuando se hace clic en el botón. Quiero obtener estos datos del componente Ubicación en las páginas/index.tsx donde tengo otros componentes que muestran esos datos.

Esta es mi estructura de componentes:

 App --Layout --Header --Location (here i fetch the data on click) --Home (state) --Display 1 --SubDisplay 1 --Display 2

¿Tengo que pasar los datos a través de todos los componentes a la página de índice? Podría ser:

  1. ARRIBA desde la ubicación hasta el encabezado
  2. ARRIBA desde el encabezado hasta el diseño
  3. ABAJO del diseño a la página de índice
  4. ABAJO de la página de índice a otros componentes

¿Es esta la mejor manera de manejar esto?

about 4 years ago · Santiago Gelvez
2 answers
Answer question

0

Debido a la naturaleza de React con respecto al flujo de datos, solo puede pasar props del componente principal a sus hijos, esto se conoce como enlace de datos unidireccional o flujo de datos unidireccional. Según la estructura de sus componentes, para lograr lo que desea hacer, necesitaría usar Context API o algo así como redux para centralizar sus datos en un solo lugar (o simplemente elevar los estados). Sin embargo, puede probar esta "solución alternativa" para que no necesite modificar la estructura de su proyecto:

Dado que su estado está en la página de inicio/índice, puede definir una función en este componente que recibirá como parámetro los datos obtenidos en el componente Location y establecer el estado con estos datos, por supuesto, deberá pasar esta función a través de props . al componente Layout para que pueda pasarlo a Header y Header a Location (perforación de apoyo), ejemplo:

 const Home = () => { const [data, setData] = useState([]); const handleData = (data) => { setData(data); } return ( <Layout handleData={handleData}> The rest of your components... </Layout> ) }

Luego, como dije, pase esa función de esta manera: Diseño - Encabezado - Ubicación.

En Location :

 const Location = ({ handleData }) => { const handleClick = () => { // Fetch your data on click event and pass it as parameter to handleData function handleData(fetchedData); } // The rest of your component... }

Espero que esto te ayude.

about 4 years ago · Santiago Gelvez Report

0

Soluciones sugeridas basadas en una mayor complejidad

  1. redux
  2. API de contexto de reacción
  3. levantando el estado

Código de muestra de estado de elevación (más fácil que otro)

  1. Defina la función de envío y los datos meteorológicos como un estado en el componente de diseño, luego envíe la función de envío al componente de encabezado y luego al componente de ubicación como apoyo.
 const [weatherData,setWeatherData]=useState(); const shippingFunction = function(data) { setWeatherData(data);}
  1. Componente de ubicación

    • Llame a props.shippingFunction en el componente Layout cuando se obtuvieron los datos meteorológicos, luego envíe los datos meteorológicos a props.shippingFunction como parámetro. Ahora tiene datos meteorológicos en el componente Diseño
  2. Componente de diseño

    • En este momento, ha completado weatherData y puede pasarlo como accesorio a cualquier componente que desee

about 4 years ago · Santiago Gelvez 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!