• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

useParams 가 동작하지 않습니다.

23.03.20 23:57 작성 23.03.20 23:58 수정 조회수 565

0

안녕하세요.

useParams 으로 파라미터 값을 보낸 뒤,

console.log() 로 값을 출력해 보고 싶은데요.

자꾸 undefined 만 출력 됩니다.

대체 이유가 뭘까요??? ㅠㅠㅠㅠㅠㅠ

// App.js
import './App.css';

import { Routes, Route } from 'react-router-dom';
import Navbar from './components/Navbar';
import routes from './routes';

function App() {
  return (
    <div>
      <Navbar></Navbar>
      <div className='container mt-3'>
        <Routes>
          {routes.map((item, i) => {
            return (
              <Route
                path={item.path}
                element={item.component()}
                key={i}
              ></Route>
            );
          })}
        </Routes>
      </div>
    </div>
  );
}

export default App;
// routes.js
import HomePage from './pages/HomePage';
import ListPage from './pages/ListPage';
import CreatePage from './pages/CreatePage';
import EditPage from './pages/EditPage';
import ShowPage from './pages/ShowPage';

const routes = [
  {
    path: '/',
    component: HomePage,
  },
  {
    path: '/blog',
    component: ListPage,
  },
  {
    path: '/blog/create',
    component: CreatePage,
  },
  {
    path: '/blog/edit',
    component: EditPage,
  },
  {
    path: '/blog/:id',
    component: ShowPage,
  },
];

export default routes;
// ShowPage.js
import { useParams } from 'react-router-dom';

const ShowPage = () => {
  let { id } = useParams();
  console.log(id); // undefined 출력

  return <div>Show Pages</div>;
};

export default ShowPage;

답변 2

·

답변을 작성해보세요.

0

이게 저는 리액트 라우터 버전이 5이고 강민정님께서는 버전 6을 사용하셔서 발생하는 이슈네요

리액트 라우터 5에서 6으로 올라가면서 약간 변화가 있는데 <Router /> 안에 속성으로 component 대신 element가 들어가는데요

routes.js 파일을 아래처럼 바꿔주세요

 // routes.js
import HomePage from './pages/HomePage';
import ListPage from './pages/ListPage';
import CreatePage from './pages/CreatePage';
import EditPage from './pages/EditPage';
import ShowPage from './pages/ShowPage';

const routes = [
  {
    path: '/',
    component: <HomePage />,
  },
  {
    path: '/blog',
    component: <ListPage />,
  },
  {
    path: '/blog/create',
    component: <CreatePage />,
  },
  {
    path: '/blog/edit',
    component: <EditPage />,
  },
  {
    path: '/blog/:id',
    component: <ShowPage />,
  },
];

export default routes;

82강에서 리액트 라우터 5에서 6으로 업그레이드를 설명하고 있으니 참고해주세요 ^^

안되거나 다른 질문 있으시면 댓글로 남겨주세요

0

github에 올려서 링크 올려주시면 확인 해보겠습니다

imminpie님의 프로필

imminpie

2023.03.22

안녕하세요! 깃헙 주소입니다.

https://github.com/mjriver/Rreact_KossieCoder