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

home2 게시판 React 게시판 React 강의 중 [Redux 5] 숙제 질문 있습니다.

React 강의 중 [Redux 5] 숙제 질문 있습니다.

  • 이 주제에는 3개 답변, 2명 참여가 있으며 유슬기3 년 전에 전에 마지막으로 업데이트했습니다.
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 글쓴이
  • #41421

    유슬기
    참가자
    강사님 안녕하세요.
    해당 강의에서  cart 페이지로 이동 시 추가된 아이템 목록이 보이지 않는 현상이 있습니다.
    강의 하단내용에 답변해주신 것처럼 Route 이용하여 처리하면 된다고 하셨는데요,
    말씀하신대로 제가 처리한 건지 잘 모르겠습니다. 봐주셨으면 좋겠습니다.
    저는 메인화면 소스에서 내비게이션 컴포넌트를 별도로 관리하고 있습니다.
    
    * App.js
    function App() {
        ....
        return () {
            <div className="App">
                (생략)
                <Route path="/cart" element={ <Cart /> } />
    
                (생략)
            </div>
        }
        
    
        ....
    }
    
    // 내비게이션
    function NavBarTop() {
        return () {
            ....
            <Nav.Link href="/cart">Cart</Nav.Link>
            ....
        }
    }
    #41422

    유슬기
    참가자
    보시기에 어려우실 듯 하여 전체 코드 중 페이지 이동하는 내비게이션 하위 컴포넌트까지만 올립니다...
    참고 부탁드리고 데이터가 왜 추가가 안되는지 봐주셨으면 좋겠어요..
    
    /* eslint-disable */
    import './App.css';
    import 'bootstrap/dist/css/bootstrap.min.css';
    import { createContext, useEffect, useState } from 'react';
    import { Container, Nav, Navbar, Row, Button, Card, CardGroup, Alert } from 'react-bootstrap';
    import imgSrc from './img/bg.png'; // 이미지 사용
    import data from './data.js'; // 경로는 . 으로 시작
    import { Routes, Route, useNavigate } from 'react-router-dom';
    import axios from 'axios'; 
     
    // 페이지별 import 
    import { Detail } from './pages/detail.js'; 
    import { Err404 } from './pages/error.js'; 
    import About from './pages/about.js'; 
    import { Event } from './pages/event.js'; 
    import Cart from './pages/cart.js';
      
     // Context API Setting 1
     export let Context1 = createContext() // state 보관함 생성
      
    function App() { 
      let [shoes, setShoes] = useState(data) 
      let navigate = useNavigate() 
      let [cnt, setCnt] = useState(0) 
      let [show, setShow] = useState(true) 
      let [stock] = useState([10, 11, 12])
     
      return ( 
        <div className="App"> 
          <NavBarTop /> 
          <Routes> 
          <Route path="/" element={ // 메인페이지 
            <> 
              <BgImg /> 
              <Container> 
                <Button onClick={async () => { 
                  { show ? <LoadingAlert/> : null } 
                  await axios.get("https://codingapple1.github.io/shop/data2.json") 
                  .then((result) => { 
                    let copy = [...shoes, ...result.data] 
                    setShoes(copy) 
                    setCnt(++cnt) 
                    setShow(false) 
                  }).catch(() => { 
                    console.log("첫번째 서버통신 실패")
                  }) 
                  
                  if(cnt == 2) { // 두번 클릭했을 때 7,8,9 데이터 가져오기 
                    await axios.get("https://codingapple1.github.io/shop/data3.json") 
                    .then((result) => { 
                      let copy = [...shoes, ...result.data] 
                      setShoes(copy) 
                      setCnt(++cnt) 
                    }).catch(() => { 
                      console.log("두번째 서버통신 실패") 
                    }) 
                  } else if(cnt > 2) { 
                    alert("더이상 상품이 존재하지 않습니다.") 
                  } 
                }}> 상품추가 </Button>
                 <Row> 
                   { 
                     (Math.floor(shoes.length) / 3) === 1 
                     ? <Cols shoes={shoes} len={shoes.length} navigate={navigate} /> 
                     : <Row> 
                         <Cols shoes={shoes} len={shoes.length} navigate={navigate} /> 
                      </Row> 
                    } 
                  </Row> 
                </Container> 
              </> 
             } />
            
             <Route path="/detail/:id" element={ 
               <Context1.Provider value={{ stock, shoes }}> 
                 <Detail shoes={shoes} /> 
               </Context1.Provider> 
              } /> 
    
              {/* 장바구니 만들기 */}
             <Route path="/cart" element={ <Cart/> } />
             {/* ****************************************************************************** */}
     
             <Route path="/about" element={<About />}>
             <Route path="member" element={<div>member element</div>} /> 
             <Route path="location" element={<div>location element</div>} />
           </Route> 
     
           <Route path="*" element={<Err404 />} />
         </Routes>
       </div>
     );
    }
    
    // 내비게이션
     
    function NavBarTop() {
      return (
        <Navbar bg="dark" variant="dark">
        <Container>
          <Navbar.Brand href="/">SHOP</Navbar.Brand> 
          <Nav className="me-auto"> 
            <Nav.Link href="#home">INTRODUCTION</Nav.Link> 
            <Nav.Link href="/cart">Cart</Nav.Link> 
            <Nav.Link href="#pricing">QnA</Nav.Link> 
          </Nav> 
        </Container>
      </Navbar> 
      )
    }
    
    (하위 컴포넌트 생략) 
    
    export default App;
    
    #41462

    codingapple
    키 마스터
    a태그는 새로고침됩니다 페이지이동은 navigate() 함수를 이용합시다
    #41514

    유슬기
    참가자
    바로 해결했습니다. props 전달이 안됐네요. 감사합니다!
    
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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