# useParams

React Router
React Router란? > React에서 CSR 기반의 페이지 라우팅을 할 수 있게 해주는 라이브러리이다. 단일 페이지로 이루어진 SPA 방식의 React는 페이지를 이동하기 위하여 Router를 사용해야한다. 1. React Router 기본 사용 방법 1) React Router 설치 터미널에 아래 코드를 입력하여 라우터를 설치할 수 있다. @6은 버전을 의미한다. 설치확인 package.json 파일에서 react-router-dom이 정상적으로 설치되었는지 확인한다. 2) React Router 불러오기 메인 컴포넌트가 될 App.js에 react-router-dom를 import 한다. BrowserRouter, Route, Routes 모두 라우터에 필요한 기능이므로 import 해준다. 3) Routes 만들기 BrowserRouter, Route, Routes 를

Storybook에서 useParams 사용하기
Storybook-addon-react-router-v6 설치 storybook-addon-react-router-v6 패키지가 react-router 를 의존하기 때문에 react-router가 설치되어 있지 않다면 설치해줍니다. 스토리북 설정 스토리 파일 설정 useParams를 사용해서 petFoodId를 가져오는 ReviewItem 컴포넌트의 경우 location: 스토리에서 사용할 라우터의 경로 및 매개변수를 정의합니다. pathParams: URL 경로에 사용할 매개변수를 정의합니다. 이 경우 petFoodId 를 1로 설정하였습니다. routing: Rea

[23.07.27] 리액트 라우터 - useParams
React Router dom useParams * * : 라우터 사용시 파라미터 정보를 가져와서 사용하고 싶을 때 Route Path` 와 일치하는 동적 매개변수(:id`) ket/value 쌍의 객체를 반환한다. 페이지의 주소를 정의할때, 유동적인 값을 전달하기 위한 문법! * 파라미터로 넘겨지는 id 값에 따라* 원하는 데이터를 불러올 수 있다. 불러올 때 useParams를 이용해서 id 값을 가져오고 그 데이터 값을 이용해서 세부 페이지에서 활용하는 구조로 만들면 됨. 사용방법 > (사용자가 /detail/:id(아무거나) 를 입력하면 Detail 컴포넌트를 보여줘 !) -> 미리 각 상품을 클릭하면`"/detail/{item.id}"
[React] useParams
◼ URL 파라미터 👈 ◼ 쿼리스트링 useParams의 사용 1) 사용하려는 컴포넌트에서 useParams를 불러와서 변수에 저장해준다. 2) App.js 컴포넌트 Route안의 path 파라미터에 주목하자. params로 무엇을 불러올 수 있을까? console.log를 사용해 불러와지는 내용을 살펴보자. > 현재 URL : localhost:3000/profiles/anyujin App 컴포넌트에서 :name(key)으로 지정해 주었던 부분과 anyujin(value)인 URL파라미터값이 한 객체로 출력된다. 
[React]-React Router에 대해 알아보자!
Router란? Routing이란! 우리가 주소창에 URL을 입력했을 때 서버에서 요청된 URL에 해당하는 데이터를 전달해주는 것! Client Side Routing(CSR) 이란? 클라이언트에서 자바스크립트 파일을 받아서, 필요한 데이터도 백엔드로부터 받아와서 클라이언트에서 최종 HTML을 만듦! 서버에게 새로운 페이지를 요청하는 것이 아님!! 페이지는 유지하되, 부분적으로 내가 원하는 곳만 그 경로에 해당하는 컴포넌트를 보여줬다가, 숨겼다가 하는 것!! Server Side Routing(SSR) 이란? 백엔드에서 필요한 데이터를 채워서 미리 HTML로 만들어줌(서버측에서 렌더링이 일어남), 그걸 클라이언트에게 보내줌 React-Router React-Router는 버전 업데이트가 빈번하므로 꼭 공식사이트를 확인하자! React Router 공식사이트 가기

[React] react-router
Next를 사용하면 pages폴더가 생성돼서 기본적인 라우팅이나 동적 라우팅을 아주 쉽게 할 수 있었다. 또한 useRouter를 사용해서 이동도 쉬웠던것 같은데.. create-react-app으로 React를 시작해보니, pages폴더가 없고 React에서는 따로 라이브러리를 설치해서 Route를 지정해주어야 한다는 사실을 알게되었다. 그래서 react-router 사용방법에 대해 알아보았다. 라우팅이란? 사용자가 요청한 URL에 따라 해당 URL에 맞는 페이지를 보여주는 것, 즉 "페이지 이동"을 라우팅이라 한다. 리액트에서는 리액트 라우터(React Router) 라이브러리를 통해 라우팅을 처리할 수 있다. 사용방법 > 📌 react-router 설치 npm i react-router-dom yarn add react-router-dom 
React-Router v.6 #2 기본
1. 동적 라우팅 이렇게 경로에 /:id처럼 집어 넣으면 동적으로 페이지를 생성할 수 있다. 그리고 useParams를 통해 동적으로 받은 페이지의 내용을 출력할 수 있다. 또한 map과 백틱을 사용해 동적으로 n개가 들어와도 하드코딩하지 않 링크를 만들어 낼 수 있다. 2. 절대 경로와 상대 경로 지금까지 해온 링크들은 모두 ‘/’로 시작하고 작동해야하는 경로에 정의하므로 모두 절대 경로에 포함되는데, 맨 위에 path: ‘/root’를 설정하면 화면에는 아무것도 나오지 않는다. 개발자 도구의 에러문을 보면 이는 절대경로 /와 /root가 겹치기 때문에 발생한다고 한다. 그러니까 children과 parent의 path가 충동하고 있다는 것이다. 그렇다면 상대경로는 어떤 것일까? 단순하게 결론부터 말하자면 /를 제거했을 상대경로로 바뀌게 된다. 이렇게 하면 parent의 path다음에 children에 있는 path가 적용된다.

portal pattern 내부에서 useParams 직접 구현하기
헉.. 왜 params가 안나오죠..? params를 콘솔로 찍어봐도 빈 객체만 나오고 있다. 😨 뭐지... 정답은 결국 기본기 > 모든 코드는 결국 JS로 컴파일되어 돌아간다. 외부 라이브러리나 프레임워크를 사용하며 이해되지 않는 문제를 직면했을때 되뇌이는 말이다. 결국 기본기.JS 엔진의 관점에서 바라보면 답은 의외로 쉽게 나온다. 모든 컴포넌트들은 결국 객체로 컴파일 된다. V-DOM의 컴포넌트 객체 관리 방식을 생각해본다면, react-router-dom의 Route 객
230216 팀프로젝트 8
오늘은 params 나눠주는 것을 공부했고...! 뭔가 프로젝트하면서 params를 쓸일이 없었는데(근데 진짜 생각해보니까 뭐 제대로 해본게 없는 것같네...? 근데 안써본게 너무 많다...ㅜㅜ;;;;;;) 이번 프로젝트에서... 써봤다...ㅎㅎ param을 사용하는 이유는 간단하다 파이어스토어에 있는 post(컬렉션명)의 id 값을 받아 비교하고 그 값을 각자의 자리에 착착 주차시켜줘야하기 때문이다...ㅋㅋㅋㅋㅋㅋ 전체값을 받아와서 대부분의 값을 넣어주기 때문에 만약 일부 값만 받아서 진행한다면 로직을 변경해주는 것이 좋다. 나의 경우는 진짜 모든 정보를 가져와서 나눠줘야하기 때문에! 그런거라... 그렇다... 뭔가 params만 들으면 벌벌 떨고 있는데 param은 결국 parameter의 약자로 매개변수의 키 혹은 값을 넘겨줄때 유용하게 쓴다는거다. 그리고 중요한거!! useParams를 사용하기 위해선 router셋팅이 되어 있어야한다. 아참 더 이용예시에 대해

Browser React Router, useParams
Browser React Router를 사용해보자 1. 설치 >npm i react-router-dom 2. Route와 path, 그리고 Link to를 이용해보자 3. useParams를 이용해보자 > 리액트 라우터를 사용 할 때, 파라미터의 정보를 가져다가 쓰고 싶다면, useParams라는 훅을 사용하면 된다. useParams 우선 객체 구조분해로, const { id } = useParams()로 설정을 한 뒤, ${id}를 이용해서 사용하면 된다. 4.코드

동적 라우팅
해결과제 동적 라우팅을 통해 데이터를 받아와서 화면에 출력하기 해결과정 배포된 서버와 연결을 한 뒤(백엔드 쪽에서 cors 설정을 해둬서 proxy로 우회하지 않아도 됐다) main page의 데이터들을 성공적으로 받아왔다. 여기까지 목데이터와 크게 다르지 않아서 쉬울꺼라 예상했고 자바가 응답을 보낼 떄 data의 객체로 감싸져 오는 것을 usefetech 자체에서 data까지 담아줘서 각 컴포넌트 단위에서는 바로 데이터 내부에 접근 할 수 있게 해뒀다! 프리 프로젝트때 data.data 이런식으로 접근하니깐 구별이 어려웠기 때문에.. 메인페이지의 포스터, 아래의 설명을 클릭하면 해당 영화의 detail page로 이동해서 해당 영화의 데이터를 받아볼 수 있다. 하지

[react] 맨날 하는 react-router-dom @v6 초기 세팅
😶🌫️ 프로젝트 초기 세팅 새로운 프로젝트를 시작하게 되면, 항상 하는 것들이 있다. 반복적으로 하지만, 맨날 검색해서 봐야되는 것들 (거의)필수로 사용되는 라이브러리를 세팅하는 것은 생각보다 만만치 않다. 대표적으로 react-router-dom eslint prettier 가 있다. React는 라이브러리, 내가 예로 들은 자취방에 가깝기 때문에, 초기 세팅을 자유롭게 해줄 수 있다는 장점이 있지만 내 손으로 모든 것을 다듬어야 한다는 점도 있다. 하나씩 정리해두고 쓰-윽 쓰-윽 꺼내먹자. 👻 react-router-dom | 경로 지정 > React Router is a lightweight, fully-featured routing library for the React JavaScript library. 리액트 라우터는 가볍고, 기능이 꽉찬 경로 라이브러리다. 거의 필수 라이브러리에 가깝다. 위 처럼 파라미터 값이 바뀔 때

[React] useParams
✅ useParams 블로그의 게시글들 처럼 형식은 같지만 받아오는 데이터에 따라서 각각 다른 포스팅 페이지를 만들고 싶다면, 물론 각자 만들어도 되지만, 더 편하게 할 수 있다!! => useParams 먼저, 상위 컴포넌트 및 파일에서는 Route의 path 속성에서 ":작명한 임의의 이름" 형식으로 url 파라미터를 사용한다 하위 컴포넌트 및 파일에서는 참고사항 => url 파라미터는 여러개 사용 가능하고, 일반 경로랑 섞어서도 사용가능!! => ex) path = "/about/:id/info/:color 🔸 TypeScript 환경에서 useParams TypeScrip 환경이라면 한가지 추가사항이 있는데, usePar

[React] useLocation / useParams
useLocation 일반 자바스크립트에서 url 정보를 가져오고 싶은 경우 location 인터페이스를 사용합니다. (참조) Location - Web API | MDN react-router-dom 에서 제공하는 여러가지 Hook들은 이러한 작업을 편하게 할 수 있도록 도와줍니다. useParams 라우팅 코드 우리가 작업한 사이트의 상품 상세 페이지

React-Router-Dom v6 (hook 사용)
프로젝트를 하면서 React-Router-Dom v6을 사용했지만 기본적인 라우팅과 경로 이동 수단으로만 사용했었다. 이번에 Youtube 클론 코딩을 진행하면서 라우팅 및 기능 구현을 위해 useLocation, useParams, useNavigate 3가지 hook을 활용하였고, 매우 유용하게 사용했기에 어떻게 사용했는지 기록하고자 한다. 1. 뒤로가기, 앞으로가기 시 input에 keyword 유지 위처럼 뒤로 가기, 앞으로가기 시 input 창에 keyword도 유지되고, 그에 따른 데이터도 유지되도록 구현하고자 했다. path는 '/video/watch/:keyword'로 설정하여 검색 시 url도 변경되도록 하였다. 데이터 유지 (useParams 사용) keyword를 *
[React] 뒤로가기
리액트로 투두를 만들던 도중, 뒤로가기를 할 수 없다는 사실을 깨달았다. 오매? 당연히 될줄알았는데... 아니였다!! 😱 어떤 동작을 해도 react-router-dom을 통해 쿼리를 설정해 놓지 않는 한은 url이 바뀌지가 않는다. 흠. 사실 뒤로가기를 내가 스택을 사용해서 할 수 있지 않을까 싶어서 빈배열을 만들고 클릭 이벤트가 생길 때마다 push해주었다. 여기까지는 됐는데, pop해서 화면을 나타내고싶어도 뒤로가기를 감지해야 한다는 🤔 문제가 생겼다. 그래서 그냥 구글링해봄. 아직 자세히 보지는 않았는데, react-router-dom에 useHistory를 사용해서 url을 변경시킬 수 있다고 한다. 이 기능을 사용하면... 언뜻 생각해도 할 수 있을 것 같긴 하다. 이미 저 라이브러리를 깔아놓은 상태이기도 하구... 그래도 일단 뒤로가기를 감지하는 방법을 먼저 찾아봐야겠당 navigation은 이제 사용하지 말라고 함... 'useHistory' (import

[Stack Overflow] 동적 라우팅 구현
🌟 동적 라우팅 구현 1. 라우트 설정 여기서 설정한 이름이 params의 key로 들어온다. > #### App.js js 3. 상세 페이지에서 다시 params 받아서 사용하기 ✅ 질문 상세 페이지 > > #### DetailPage.js 상세 페이지 진입 시 API 호출 주소 : URL parameter에 접근해 데이터(question id 정보)를 받아와서 다시 사용 const { questionId } = useParams(); // useParams 사용 ... useEffect(() => { async function

[Typescript] useParams() 타입 & undefined 에러
혹시나 잘못된 개념 전달이 있다면 댓글 부탁드립니다. 저의 성장의 도움이 됩니다. 문제상황 > TS2345: Argument of type 'string I undefined' is not assignable to parameter of type 'string'. Type 'undefined' is not assignable to type 'string'. Javascript와 달리 Typescript를 사용할 때, 공식문서에 정의된 방식으로 사용하면 타입에 undefined를 포함하게 된다. 그래서 useEffect에서 fetch 요청을 위해 useParams의 반환값을 전달하면 타입 에러가 발생한다.

노마드코더 ReactJS로 영화 웹 서비스 만들기 8 (영화 웹 서비스)
#7.3 ~ 7.10 지금까지 배운 것들을 응용해서 영화정보를 보여주는 웹 서비스를 만들어 볼거임. 일단 많은 영화정보들을 받을 수 있는 API를 가져오자! movie app 초기 세팅(fetch포함) 로딩 중이라는 걸 보여주도록 useState를 사용해 기본값을 true로 줌. return {loading ? Loading... : null}; : Loading이 아니라면 영화들을 return해줘야 하는데 아직 없으니 null로 해줌. useEffect(() => {}, []); 빈배열을 주면 처음 페이지가 로딩되었을 때만 코드가 실행됨. useEffect에 fetch를 넣어 API를 받아옴. .then() 사용 위의 코드처럼 movies를 console.log에 넣어서 콘솔창에서 확인해보자!  라우트 경로에 특정 id 값을 넣어 해당하는 페이지로 이동할 수 있게 하는 것을 동적라우팅 라고 한다. 참고자료 useParams 라우터 사용시 파라미터 정보를 가져와 활