React高德天气

npm install axios

Gaode.js

import { useEffect, useState } from "react";
import axios from 'axios';
import './Gaode.css';
function Gaode() {
    const [weatherData, setWeatherData] = useState(null);
    const [selectedCity, setSelectedCity] = useState('');
    const [cityList, setCityList] = useState([]);
    const API_KEY = '4c503c852e38e2286c8544f2097b1184';

    useEffect(() => {
        const fetchCityList = async () => {
            try {
                const response = await axios.get('https://restapi.amap.com/v3/config/district', {
                    params: {
                        key: API_KEY,
                        subdistrict: 1,
                    },
                });
                setCityList(response.data.districts[0].districts);
            } catch (error) {
                console.error('Error fetching city list', error);
            }
        }
        fetchCityList();
    }, []);

    useEffect(() => {
        const fetchWeather = async () => {
            if (selectedCity) {
                try {
                    const response = await axios.get('https://restapi.amap.com/v3/weather/weatherInfo', {
                        params: {
                            key: API_KEY,
                            extension: 'base',
                            city: selectedCity,
                        },
                    });
                    setWeatherData(response.data.lives[0]);
                } catch (error) {
                    console.error('Error fetching weather data:', error);
                }
            } else {
                setWeatherData(null);
            }
        };
        fetchWeather();
    }, [selectedCity]);

    const handleCityChange = (e) => {
        setSelectedCity(e.target.value);
    };

    return (
        <div className="App">
            <h2>天气信息</h2>
            <label htmlFor="citySelect">选择城市:</label>
            <select id="citySelect" value={selectedCity} onChange={handleCityChange}>
                <option value="">请选择城市</option>
                {cityList.map((city) => (
                    <option key={city.adcode} value={city.adcode}>{city.name}</option>
                ))}
            </select>
            {weatherData ? (
                <div>
                    <p>城市: {weatherData.city}</p>
                    <p>天气: {weatherData.weather}</p>
                    <p>温度: {weatherData.temperature}℃</p>
                </div>
            ) : (
                <p>正在获取天气信息...</p>
            )}
        </div>
    );
}

export default Gaode;

渲染

import React from 'react';
//import ReactDOM from 'react-dom';
import ReactDOM from 'react-dom/client'; // 注意这里需要引入 'react-dom/client'
//import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
// import Parent from './components/parent';
// import Components from "./components/MouseDiv";
// import Comments from  "./components/Comments";
 import Gaode from "./components/Gaode";
import TodoList from "./redux/TodoList";
import BrowserRouter1 from "./components/BrowserRouter1"
import Test from "./Test";
import Router from "./components/sy/Router/router";
import Login from "./components/sy/Login";
import Parent from "./components/parent";
/*const root = ReactDOM.createRoot(document.getElementById('root')); // 创建一个root
root.render(<Login />); // 使用这个root来渲染你的组件*/

// ReactDOM.render(<TodoListUi/>,document.getElementById('root'));

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <Gaode />
  </React.StrictMode>
);

// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();

React高德地图是一个针对React进行封装的地图插件,可以通过引入react-amap库来使用。你可以在官方网址https://elemefe.github.io/react-amap/components/map找到更多关于该插件的API文档。在使用时,你可以通过安装react-amap来引入插件,也可以直接使用SDN方式引入。在React组件中,你可以使用Map和Marker等组件来展示地图和标记点。你需要在高德官网上申请一个地图的API Key,并将其作为amapkey属性传递给Map组件。你还可以通过设置属性和绑定事件来自定义地图的行为,比如设置地图的中心点、缩放级别,以及绑定单击、双击、移动等事件。如果需要销毁地图实例,你可以使用map.destroy()方法来注销地图实例并释放内存。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [React使用高德地图react-amap)(一)](https://blog.csdn.net/u013262823/article/details/92795965)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【高德地图React项目中的使用——(二)各种配置的使用】](https://blog.csdn.net/qq_45149366/article/details/126125667)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值