Helo semua, saya sedang membina apl cuaca bertindak balas di mana pengguna dibenarkan memasukkan nama bandar mereka dan maklumat cuaca dipaparkan semula kepada pengguna.
Masalahnya ialah, saya mempunyai input dan butang dalam borang, dan saya mahu menerima data daripada komponen lain yang dipanggil WeatherApp.
bagaimana cara saya memautkan kedua-dua komponen
komponen bentuk
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;
dan komponen aplikasi cuaca
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;
Atas ialah kandungan terperinci Cara menerima data dalam bentuk daripada komponen lain. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!