이번 플젝은 리액트 라우터 돔, 스타일컴포넌트를 사용한다!
그래서인가.. 시작부터 에러가 계속...
public에 넣어둔 이미지를 가져오려고 이렇게 적었는데👇
<img src={`${process.env.PUBLIC_URL}/images/logo.png`} alt="logo" />
에러가 떴다...👻👻👻
Vite와 같은 번들러에서는 process 객체가 기본적으로 정의되지 않기 때문에 발생하는 오류임ㅠㅠ
💫그래서 코드를 이렇게 수정함!
<img src={`${import.meta.env.BASE_URL}images/logo.png`} alt="logo" />
react router 설치후 경로 설정!
const router = createBrowserRouter([
{
path: "/",
errorElement: <NotFound />,
children: [
{ index: true, element: <Home /> },
{ path: "dex", element: <Dex /> },
{
path: "pokemon/:pokemonId",
element: <Detail />,
},
],
},
]);
const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
<RouterProvider
router={router}
/>
);
그리고 카드를 클릭시 id를 Link태그로 보내는데 자꾸 href에 dex가 뜨는 문제가👻👻👻
const StyledLink = styled(Link)`
background: #fff;
`;
...
<StyledLink to={id}>
이유를 모르겠어서 튜터님께 찾아갔더니 Link태그에 절대경로 /슬러쉬를 적어줘야한다고 하셨음!!!
그리고 url를 위에 경로에서 pokemon/:pokemonId를 적어줬기때문에 이를 따라야함!
💫 그래서 해결한 코드💫
<StyledLink to={`/pokemon/${id}`}>
path받아오기
import { useParams } from "react-router-dom";
const { pokemonId } = useParams();
구조분해할당할때 값을 path에 쓴 값과 동일하게!!!
뒤로가기 구현
useHistory가 왜 안되나 했는데 없어졌...
웹api를 사용해서 뒤로가기 구현까지 완료@@
const handleGoBack = () => {
history.back();
};
<button type="button" onClick={handleGoBack}>
뒤로가기
</button>
'부트캠프 프로젝트(完) > 포켓몬 수집 사이트(完)' 카테고리의 다른 글
[포켓몬 수집 사이트]회고록 (2) | 2024.11.14 |
---|---|
[포켓몬 수집 사이트]3. redux (1) | 2024.11.12 |
[포켓몬 수집 사이트]2. 중복값처리, top구현,react-toastify (0) | 2024.11.08 |