Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

239
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda