• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 React 게시판 강의 응용문제

강의 응용문제

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #47466

    이태원
    참가자
    안녕하세요 리액트 강의 듣고 있는 사람입니다.
    
    먼저 좋은 강의 들려주셔서 감사합니다.
    
    다름이 아니라 강사님께서 내주신 응용문제에 대한 해답은 따로 제공하지 않은지가 궁금합니다.
    
    만약 제공하지 않으신다면 3번째 문제에 대한 답을 알 수 있을까 해서 문의드립니다.
    
    제가 응용문제 1,2번 짠 코드는 아래와 같으며, usestate를 통해 alert를 켰다 껐다 하려고 했는데 코드가 정상적으로 돌아가지 않아 문의드립니다.
    import logo from "./logo.svg";
    import "./App.css";
    import { Button, Navbar, Nav, Container, Col, Row } from "react-bootstrap";
    import data from "./data";
    import { useState } from "react";
    import { Routes, Route, Link, useNavigate, Outlet } from "react-router-dom";
    import Detail from "./routes/Detail";
    import axios from "axios";
    import Loader from "./routes/Loader";
    function App() {
      let [shoes, setShoes] = useState(data);
      let navigate = useNavigate(); // 페이지 이동함수
      let [count, setCount] = useState(0);
      let [more, setMore] = useState(true);
      let [loadalert, setLoadalert] = useState(true);
      return (
        <div className="App">
          <Navbar bg="dark" variant="dark">
            <Container>
              <Navbar.Brand href="#home"> Shopping Mall</Navbar.Brand>
              <Nav className="me-auto">
                <Nav.Link
                  onClick={() => {
                    navigate("/");
                  }}
                >
                  Home
                </Nav.Link>
                <Nav.Link
                  onClick={() => {
                    navigate("/detail");
                  }}
                >
                  Detail
                </Nav.Link>
                <Nav.Link
                  onClick={() => {
                    navigate("/about");
                  }}
                >
                  About
                </Nav.Link>
                <Nav.Link
                  onClick={() => {
                    navigate("/event");
                  }}
                >
                  event
                </Nav.Link>
              </Nav>
            </Container>
          </Navbar>
          <Routes>
            <Route
              path="/"
              element={
                <>
                  <div className="main-bg"></div>
                  <div className="container">
                    <div className="row">
                      {shoes.map((a, i) => {
                        return <Card shoes={shoes[i]} i={i}></Card>;
                      })}
                    </div>
                  </div>
                </>
              }
            ></Route>
            <Route
              path="/detail/:id"
              element={<Detail shoes={shoes}></Detail>}
            ></Route>
            <Route path="/event" element={<Event></Event>}>
              <Route path="one" element={<p>첫 주문시 양배추즙 서비스</p>}></Route>
              <Route path="two" element={<p>생일기념 쿠폰받기</p>}></Route>
            </Route>
            <Route path="/about" element={<About></About>}>
              <Route path="member" element={<div>멤버</div>}></Route>
              <Route path="locoation" element={<div>위치정보</div>}></Route>
            </Route>
            {/* <Route path='*' element={<div>없는페이지</div>}></Route> */} //
            이외에 전부다
          </Routes>
          {more == true ? (
            <button
              onClick={() => {
                {
                  loadalert == true ? alert("로딩중입니다.") : null;
                }
                console.log("a");
                setCount(count + 1);
                if (count == 0) {
                  axios
                    .get("https://codingapple1.github.io/shop/data2.json")
                    .then((data2) => {
                      let copy = [...shoes, ...data2.data];
                      setShoes(copy);
                      setLoadalert(false);
                      {
                        loadalert == true ? alert("로딩중입니다.") : null;
                      }
                    })
                    .catch(() => {
                      alert("실패했습니다.");
                      setLoadalert(false);
                      {
                        loadalert == true ? alert("로딩중입니다.") : null;
                      }
                    });
                } else if (count == 1) {
                  axios
                    .get("https://codingapple1.github.io/shop/data3.json")
                    .then((data2) => {
                      let copy = [...shoes, ...data2.data];
                      setShoes(copy);
                      setLoadalert(false);
                      {
                        loadalert == true ? alert("로딩중입니다.") : null;
                      }
                    })
                    .catch(() => {
                      alert("실패했습니다.");
                      setLoadalert(false);
                      {
                        loadalert == true ? alert("로딩중입니다.") : null;
                      }
                    });
                } else {
                  setMore(false);
                  <div>상품 없음</div>;
                }
              }}
            >
              더보기
            </button>
          ) : null}
        </div>
      );
    }
    function About() {
      return (
        <div>
          <h4></h4>
          <Outlet></Outlet>
        </div>
      );
    }
    function Event() {
      return (
        <div>
          <h4></h4>
          <Outlet></Outlet>
        </div>
      );
    }
    function Card(props) {
      return (
        <div className="col-md-4">
          <img
            src={
              "https://codingapple1.github.io/shop/shoes" + (props.i + 1) + ".jpg"
            }
            width="80%"
          ></img>
          <h4>{props.shoes.title}</h4>
          <p>{props.shoes.price}</p>
        </div>
      );
    }
    function Loading(props) {
      return console.log("a");
    }
    export default App;
    
    
    
    
    
    
    
    
    
    
    
    
    
    #47486

    codingapple
    키 마스터
    state변경함수는 다른코드보다 늦게 동작해서 밑의 코드가 먼저 실행됩니다
    나중에 나올 setstate async어쩌구 강의를 참고합시다
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠