위의 그림에서 footer가 없는 경우라고 생각하면 됩니다.
https://ant.design/components/layout/ 참고하시면 되고요,
저희는 여기서 특별히 'Sider'에 메뉴바를 넣었습니다.
저쪽에 서브카테고리들(ex소개 -> 학부장소개, 학부장인사말, 동아리소개, 오시는 길 ...)
을 넣으시면 됩니다.
그리고 'Content'에는 다음과 같은 렌더함수를 이용하여 {this.renderSubCategoryPage(this.state.currentSubCategory)}
계층적인 오버레이를 만드는 것입니다.
Url로 접근하거나 혹은 네비게이션 바의 버튼을 눌러 들어오거나 등등
해당 서브카테고리로 접근 시 (ex http://localhost:8080/members/honourProfessor)
url의 파라미터(honourProfessor)에서 서브카테고리 정보를 뺀다음, react state에 저장하고,
렌더함수에 해당 항목을 넘기는 방식입니다.
이렇게 되있는데 저기서 /:category가 파라미터입니다. 지금 너무 많은 라우터들이 있는데 다 저런식으로 정리해주시면 됩니다.
그리고 더 많은 파라미터를 전달할 경우
예를들어
<Route path="/reservation/:category/:roomkey?" component={ReservationPage} />
물음표를 넣어 파라미터를 옵션으로 지정할 수 있습니다. (/:roomkey?가 옵션입니다."
사실 카테고리도 옵션으로 줄 수 있는데, 가독성을 위해 분리했습니다.
1번은 componentWillMount() 로 핸들하고, 2,3번은 componentWillReceiveProps(newProps)로 핸들합니다. 기본적으로 둘은 같은 기능을 수행합니다.
그리고 2번의 클릭핸들은
<Menu.Item key="professor" onClick={() => this.props.history.push('/members/professor')}>교수</Menu.Item> 와 같이 아예 페이지를 다시 넘기는 듯한 동작으로 처리합니다.(물론 리액트니까 컴포넌트만 변화되는거같습니다)
3번은 일반적인 url 설정하듯이 네비게이션 바의 to를 바꿔주세요.
두가지 신경 쓰실 게 있는데, 첫번째는 레이아웃이고, 두번째는 url parameter 설정입니다.
레이아웃
위의 그림에서 footer가 없는 경우라고 생각하면 됩니다. https://ant.design/components/layout/ 참고하시면 되고요, 저희는 여기서 특별히 'Sider'에 메뉴바를 넣었습니다. 저쪽에 서브카테고리들(ex소개 -> 학부장소개, 학부장인사말, 동아리소개, 오시는 길 ...) 을 넣으시면 됩니다. 그리고 'Content'에는 다음과 같은 렌더함수를 이용하여
{this.renderSubCategoryPage(this.state.currentSubCategory)}
계층적인 오버레이를 만드는 것입니다.Url로 접근하거나 혹은 네비게이션 바의 버튼을 눌러 들어오거나 등등 해당 서브카테고리로 접근 시 (ex http://localhost:8080/members/honourProfessor) url의 파라미터(honourProfessor)에서 서브카테고리 정보를 뺀다음, react state에 저장하고, 렌더함수에 해당 항목을 넘기는 방식입니다.
index.js에 보시면 라우터가
이렇게 되있는데 저기서 /:category가 파라미터입니다. 지금 너무 많은 라우터들이 있는데 다 저런식으로 정리해주시면 됩니다.
그리고 더 많은 파라미터를 전달할 경우 예를들어
<Route path="/reservation/:category/:roomkey?" component={ReservationPage} />
물음표를 넣어 파라미터를 옵션으로 지정할 수 있습니다. (/:roomkey?가 옵션입니다." 사실 카테고리도 옵션으로 줄 수 있는데, 가독성을 위해 분리했습니다.요약하자면 세가지입니다. 1.브라우저의 url창으로 서브카테고리 페이지 ex http://localhost:8080/members/honourProfessor) 접근할경우 2.페이지 내에서 사이드바 클릭으로 다른 서브카테고리로 이동할 경우 3.메인페이지에서 네비게이션 바를 클릭해 들어올 경우
1번은 componentWillMount() 로 핸들하고, 2,3번은 componentWillReceiveProps(newProps)로 핸들합니다. 기본적으로 둘은 같은 기능을 수행합니다. 그리고 2번의 클릭핸들은
<Menu.Item key="professor" onClick={() => this.props.history.push('/members/professor')}>교수</Menu.Item>
와 같이 아예 페이지를 다시 넘기는 듯한 동작으로 처리합니다.(물론 리액트니까 컴포넌트만 변화되는거같습니다) 3번은 일반적인 url 설정하듯이 네비게이션 바의 to를 바꿔주세요.일단 급하게 썼는데, MembersPage 참고하면 어렵지 않을 거 같습니다.