大家好,我正在建立一個反應天氣應用程序,允許用戶輸入他們的城市名稱,並將天氣資訊顯示給用戶。
問題是,我在表單中有輸入和按鈕,我想從另一個名為 WeatherApp 的元件接收資料。
如何連結這兩個組件
表單組件
import '../App.css'; import Input from './Input'; import Button from './Button'; import { useState } from 'react'; const Form = ({handleQueryChange}) => { const [city, setCity] = useState('') const handleChange = (e) => { setCity(e.target.value) } const handleSubmit = (e) => { e.preventDefault(); handleQueryChange(city); } return ( <div> <form className="inputForm" onSubmit={handleSubmit}> <Input value={city} onChange={handleChange} /> <Button/> </form> </div>); } export default Form;
和天氣應用組件
import React from 'react'; import { BrowserRouter, Routes,Route } from 'react-router-dom'; import { useState, useEffect } from 'react'; import { WiDaySunny,WiCloud, WiNightCloudy,WiHumidity, WiNightClear } from 'react-icons/wi'; import Layout from './Layout'; import Home from './Home'; import Minutecast from './Minutecast'; import Hourly from './Hourly'; import Today from './Today'; import '../App.css'; const WeatherApp = () => { const [data, setData] = useState([]); const [query, setQuery] = useState('Accra'); const handleQueryChange = (data) => { setQuery(data.location.name); } const getWeatherIcons = (description) =>{ switch(description.toLowerCase()) { case 'sunny': return <WiDaySunny size='100px'/>; case 'cloud': return <WiCloud size='100px'/>; case 'clear': return <WiNightClear size='100px'/>; case 'partly cloudy': return <WiNightCloudy size='150px' color='blue' />; default: return <WiDaySunny color='red' size='100px' />; } } const convertToWhole = (tem) =>{ const whole = Math.trunc(tem); return whole; } useEffect(()=>{ const fetchWeatherData = async () => { try { const response = await fetch(`https://api.weatherapi.com/v1/forecast.json?key=95f0ddb3a06a4a358cf223933242311&q=${query}&days=10&aqi=yes&alerts=no`); const result = await response.json(); setData(result); console.log(result); } catch (error) { console.error("Error fetching weather data:", error); } }; fetchWeatherData(); }, [data]); return ( <> <div className="formContainer"> {/* <Form onSubmit={handleQueryChange} /> */} </div> <BrowserRouter> <Routes> <Route path ='/' element={< Layout />}> <Route index element={<Home data={data} getWeatherIcons={getWeatherIcons} convertToWhole={convertToWhole}/>} /> <Route path='minutecast' element={<Minutecast />}/> <Route path='hourly' element={<Hourly data={data} convertToWhole={convertToWhole}/>}/> <Route path='today'element={<Today data={data} />}/> </Route> </Routes> </BrowserRouter> </> ) } export default WeatherApp;
以上是如何從另一個元件接收表單數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!