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

home2 게시판 React 게시판 React Router 2 : Link, Switch, history 기능 useHistory 에러

React Router 2 : Link, Switch, history 기능 useHistory 에러

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

    Arete
    참가자

    Detail.js

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

    function Detail(){
     
      let history = useHistory();
      return (
        <div className="container">
          <div className="row">
            <div className="col-md-6">
              
            </div>
            <div className="col-md-6 mt-4">
              <h4 className="pt-5">상품명</h4>
              <p>상품설명</p>
              <p>120000원</p>
              <button className="btn btn-danger">주문하기</button>
              <button onClick={()=>{ history.goBack() }} className="btn btn-danger">뒤로가기</button>
            </div>
          </div>
      </div>  
      )
    };

    export default Detail

    여기서 Invalid hook call. Hooks can only be called inside of the body of a function component. 에러가 뜹니다

    let histroy = useHistory(); <- 이 부분을 지우면 정상 작동

    다른 라우팅 관련 코드들에는 문제가 없어 보이는데 어떡해 해결해야 할까요?

    버전 :

    "react": "^17.0.2",
        "react-bootstrap": "^2.2.2",
        "react-dom": "^17.0.2",

    )

     

    <strong>App.js</strong>

    import React, { useState } from 'react';
    import {Link, Route, Switch} from 'react-router-dom';
    import {Navbar, Container, Button, Nav, NavDropdown} from 'react-bootstrap';
    import Detail from './Detail';
    import ProductItem from './ProductItem';
    import './App.css';

    function App() {
      let [shoes, setShoes] = useState(ProductItem);

      return (
        <div className="App">
            <Navbar bg="light" expand="lg">
            <Container>
              <Navbar.Brand href="#home">ShoeShop</Navbar.Brand>
              <Navbar.Toggle aria-controls="basic-navbar-nav" />
              <Navbar.Collapse id="basic-navbar-nav">
                <Nav className="me-auto">
                  <Nav.Link> <Link to="/">Home</Link> </Nav.Link>
                  <Nav.Link><Link to="/detail">Detail</Link></Nav.Link>
                </Nav>
              </Navbar.Collapse>
            </Container>
          </Navbar>
          <Route exact path="/">
            <div className='jumbotron'>
              <h1>20% Seson Off</h1>
              <p>
                  This is simple hero unit
              </p>
              <p>
                <Button variant="primary">Learn more</Button>
              </p>
            </div>
            <div className='container'>
            <div className='row'>
              {shoes.map((v, i) => {
              return(
                <Product value={v} key={i}/>
              )
              })}
            </div>
          </div>
          </Route>
          <Route path="/detail">  
              <Detail />
          </Route>
        </div>
      );
    }

    function Product(props)
    {
      return(
        <div className='col-md-4'>
         
          <h4>{props.value.title}</h4>
          <p>{props.value.content} & {props.value.price}원</p>
        </div>
      )
    }

    export default App;

     

    <strong>Index.js</strong>

    import React from 'react';
    import ReactDOM from 'react-dom';
    import './index.css';
    import App from './App';
    import reportWebVitals from './reportWebVitals';
    import {BrowserRouter} from "react-router-dom";

    ReactDOM.render(
      <React.StrictMode>
        <BrowserRouter>
          <App />
        </BrowserRouter>
      </React.StrictMode>,
      document.getElementById('root')
    );

    // 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();

     

     

    #30600

    codingapple
    키 마스터

    package.json 파일에 react-router-dom 항목이 없는거보니 패키지 설치가 이상한 곳에 되었거나 그런게 아닐까요 

    #30608

    Arete
    참가자

    오마이갓~ 그렇네요 패키지를 상위폴더에 깔아버렸었네요 감사합니다

3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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