라우트의 경로에 특정 값을 넣어 해당 페이지로 이동할 수 있게 하는 것 (Dynamic Routing)
방법 (2가지)
Query parameters
URL parameters
history
이 객체를 통해 push, replace 를 통해
다른 경로로 이동 or 앞 뒤 페이지 전환 가능
ex. this.props.history.push('/page')
location
match
/company_list?category=3
인 경우this.props.location
을 통해서 해당 주소의 정보를 가지고 올 수 있음로그인 시도 → API와 통신 & 토큰 유무 확인 → 토큰 有
→ 로컬 스토리지 저장 & /company_list?category=3
주소의 URL로 이동
⇒ Query parameters 방식
/company_list?category=3
의미/company_list
페이지에서 category=3
의 데이터를 화면에 보여줘라해설: 리스트 페이지에서 componentDidMount 함수 내부의 fetch 함수 부분
this.props.location.search
(코드 31번째 줄)
콘솔(this.props.location.search)
⇒ ?category=3
= /company_list
뒷 부분
.split("=")[1]
추가
⇒ 3
반환
⇒ 변수(queryId
)에 저장
cf) Query parameters 긴 경우
아이템을 Link 태그로 감쌈
코드 해석
디테일(company_detail) 페이지로 이동하면서 볼 상품의 ID(jobID)를 뒤에 덧붙임
URL parameters 사용
match
라우트 매칭 정보 & params (/company_detail/:id
) 정보
params
params 정보 ⇒ this.props.match.params
를 통해 가져올 수 있음
params 데이터 사용법
Routes.js 에서 디테일 페이지의 라우트 설정 수정
→ CompanyDetailPage
컴포넌트에서 this.props.match.params.id
를 통해 해당 값 가져오기 가능
참고
// Routes.js - CompanyDetailPage 라우트 설정
<Route exact path="/company_detail/:id" commponent={CompanyDetailPage} />
// CompanyItem.js - List 페이지에서 상품 클릭 시 상세 페이지 이동 경로 설정
<Link to={`/company_detail/${this.props.jobId}`}> ... </Link>
// 상세 페이지 진입 시 API 호출 주소
fetch(`http://10.58.7.182:8001/job/recruitment/${this.props.match.params.id}`)
CompanyDetailPage.js
/users // 사용자 전체의 목록을 가져온다.
/users/123 // id 값이 123인 사용자를 가져온다.
/users?job=programer // 필터링 >>> 직업이 프로그래머인 사용자 목록만 가져온다.
노력의 아이콘 의지의 아이콘 끈질김의 아이콘 = kate jung !!