SPA

mamomi·2022년 10월 27일
0

practice-react

목록 보기
1/4
post-thumbnail

1. 주간 오전/오후 날씨를 나타내는 페이지를 구현하시오.

react-router-dom 첫 구현! 앵커인듯 앵커아닌 앵커같은 너...

App.js

import React from 'react';
import {Link,Routes,Route} from 'react-router-dom';
import Weather from './Weather';
import Error404 from './Error404';


function App() {
  return (
    <div>
      <h1>주간날씨</h1>
      <hr />

      <nav>
        <Link to="/weather/mon"></Link>&nbsp;|&nbsp;
        <Link to="/weather/tue"></Link>&nbsp;|&nbsp;
        <Link to="/weather/wed"></Link>&nbsp;|&nbsp;
        <Link to="/weather/thu"></Link>&nbsp;|&nbsp;
        <Link to="/weather/fri"></Link>&nbsp;|&nbsp;
        <Link to="/weather/sat"></Link>&nbsp;|&nbsp;
        <Link to="/weather/sun"></Link>
      </nav>

      <Routes>
        <Route path="/weather/:id" element={<Weather />} />
        <Route path="/*" element={<Error404 />} />
      </Routes>
    </div>
  );
};

export default App;

Weather.js

import React from 'react';
import {useParams} from 'react-router-dom';

const Weather = () => {
    console.clear();

    const params = useParams();
    console.debug(params);

    const weather = {
        item: [
            {id: "mon", am: "맑음", pm: "맑음"},
            {id: "tue", am: "비", pm: "맑음"},
            {id: "wed", am: "맑음", pm: "흐림"},
            {id: "thu", am: "맑음", pm: "흐림"},
            {id: "fri", am: "흐림", pm: "흐림"},
            {id: "sat", am: "비", pm: "맑음"},
            {id: "sun", am: "맑음", pm: "맑음"}
        ]
    };

    const id = params.id;
    console.log(id);

    let weatherItem = weather.item.find((v,i) => v.id === id);

    if (!weatherItem) {
        return (<h2>존재하지 않는 데이터에 대한 요청입니다.</h2>);
    }
    
    return (
        <div>
            <h2>오전</h2>
            <p>{weatherItem.am}</p>
            <h2>오후</h2>
            <p>{weatherItem.pm}</p>
        </div>
    );
};

export default Weather;

실행화면

profile
되고 싶다. 나는. 멋진 개발자가.

0개의 댓글