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

home2 게시판 React 게시판 useContext 강의에서 에러가 납니다

useContext 강의에서 에러가 납니다

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

    김철연
    참가자

    선생님처럼 App.js에 다른 컴포넌트를 작성하지 않고 따로 js파일을 만들어서 import해오는 식으로 작성한 생태입니다
    import {useContext} from 'react' 도 다했고 강의 하시는대로 다 따라했는데도 Card.js (저는 Product.js)에서 
    let 재고 = useContext(재고context)를 하면 Card.js (Product.js)에서 재고context is not defined라고 에러가 뜹니다

    ------------------------------------------Card.js (Product.js)---------------------------------------------

    import React, { useContext } from 'react'
    import { useHistory } from 'react-router-dom'

    export default function Product({ product, index }) {
       let history = useHistory()
       let 재고 = useContext(재고context)

       return (
          <div className="col-md-4">
          <img
                src={https://codingapple1.github.io/shop/shoes${index + 1}.jpg}
                alt="shoe"
                style={{ width: '100%' }}
           />
             <h4>{product.title}</h4>
             <p>{product.content}</p>
             <p>{product.price}</p>
             {재고}
          </div>
       )
    }

     

     

    ------------------------------------------App.js-----------------------------------------------------

    import './App.css'
    import { Navbar, Container, Nav, NavDropdown, Button } from 'react-bootstrap'
    import React, { useState, useContext } from 'react'
    import ShoeInfo from './data'
    import Product from './Product'
    import Order from './Order'
    import axios from 'axios'

    import { Link, Route, Switch } from 'react-router-dom'

    let 재고context = React.createContext()

    function App() {
       const [shoeData, setShoeData] = useState(ShoeInfo)
       const [stockData, setStockData] = useState([10, 11, 12])

       return (
          <div className="App">
             {/* 설명.. MAIN PAGE */}
             <Navbar bg="light" expand="lg">
                <Container>
                   <Navbar.Brand href="#home">슈마켓</Navbar.Brand>
                   <Navbar.Toggle aria-controls="basic-navbar-nav" />
                   <Navbar.Collapse id="basic-navbar-nav">
                      <Nav className="me-auto">
                         <Nav.Link as={Link} to="/">
                            홈
                         </Nav.Link>
                         <Nav.Link as={Link} to="/detail">
                            주문하기
                          </Nav.Link>
                          <NavDropdown title="Dropdown" id="basic-nav-dropdown">
                             <NavDropdown.Item href="#action/3.1">Action</NavDropdown.Item>
                             <NavDropdown.Item href="#action/3.2">
                                Another action
                             </NavDropdown.Item>
                             <NavDropdown.Item href="#action/3.3">
                                Something
                             </NavDropdown.Item>
                             <NavDropdown.Divider />
                             <NavDropdown.Item href="#action/3.4">
                                Separated link
                             </NavDropdown.Item>
                          </NavDropdown>
                       </Nav>
                    </Navbar.Collapse>
                 </Container>
              </Navbar>
              <Switch>
                 <Route exact path="/">
                    <div className="sale-info-page">
                       <h1>2022년 새해맞이 기념할인</h1>
                       <p>
                          2022년 임인년 새해맞이 인기상품 파격 할인! <br /> 작년까지 가장
                          많이 팔린 신발 3종을
                         <br /> 전 세계에서 가장 저렴하게 구매하세요!
                       </p>
                       <p>
                          <Button variant="primary">Learn more</Button>
                       </p>
                    </div>
                    <div className="container">
                       <재고context.Provider value={stockData}>
                          <div className="row">
                             {shoeData.map((product, index) => {
                                return <Product product={product} index={index} key={index} />
                                // <Product shoeData={shoeData[index]} key={index} />
                             })}
                          </div>
                       </재고context.Provider>
                       <button
                          className="btn btn-primary"
                          onClick={() => {
                          // 로딩중이라는 UI띄움
                          axios
                            .get('https://codingapple1.github.io/shop/data2.json')
                            .then((obj) => {
                            // 로딩중이라는 UI 없앰
                               const newShoes = obj.data
                               const newShoeData = [...shoeData]
                               newShoeData.push(...newShoes)
                               setShoeData(newShoeData)
                               //setShoeData([...shoeData, ...obj.data])
                            })
                            .catch(() => {
                               // 로딩중이라는 UI 없앰
                               console.log('실패')
                             })
                          }}>
                         더보기
                      </button>
                   </div>
                </Route>

                {/* 설명.. DETAIL PAGE */}

                <Route path="/detail/:id">
                   <Order
                      shoeData={shoeData}
                      stockData={stockData}
                      setStockData={setStockData}
                    />
                 </Route>
              </Switch>
           </div>
         )
    }

    export default App

     

    #25002

    김철연
    참가자

    강의 뒷부분을 듣고 해결했습니다!

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 호 / 개인정보관리자 : 박종흠