71 router-link, redirect 리서치
source: categories/study/vue-experiance/vue-experiance_9-71.md
71 router-link, redirect 리서치
- ㅍㅌㄱㄹㅈ 탭메뉴 이동시 활성화 탭 유지 리서치
- router-link API 리서치
- redirect 리서치
- 현재 router 구조 한계 파악
- 해당 이슈 해결하려면 beforeEnter 훅 사용 필요
- 하지만 beforeEnter, redirect 변수 전달 방법 알아내지 못함
- redirect 여러번 호출 현상 - 리서치해보니 정상이라는 듯
- 다른 해결책 리서치 필요
71.1 keep-alive, component 태그를 사용한 구조로 변경해야겠음
- 기존 구조를 유지하려고 했는데 방법이 없음
-
좀 뜯어 고치더라도
keep-alive
,component
로 구조를 다시 만드는 것이 좋을 듯 watch
,$route
,dynamic redirect
,beforeEnter
등등 활용해보려 했지만..- 경로가 겹침으로 인해 재호출이 발생함 : 무한 재호출은 아니더라도 계속 이러한 문제가 발생..
71.2 리서치 결과 정리
71.2.1 GNB 메뉴 ( a / b / c ) 이동 시 선택된 모듈이 변경되지 않도록 개선 요청
- 결론
- 정확한 리소스는 파악 안되지만 오래 걸릴 것으로 예상
- 해당 리소스만 1달 내내 처리해도 할 수 있을지 의문
- 현재 상황
- UI상으론 Tab 메뉴이지만 Router로 처리
- Redirect, children 활용
- 아래와 같은 구조
- 때문에 제일 하위 컴포넌트 (텝 이동, 하지만 실제론 라우터 이동) 이동임에도 불구하고 url 이동이라 상위에서 하위로 주소가 찾아들어감 > 이 과정에서 하위에 속한 redirect 함수들 계속 호출
- 이 지라 이슈를 해결하기 위해선 이러한 상황 속에서 redirect를 dynamic하게 만들어야함
- UI상으론 Tab 메뉴이지만 Router로 처리
- 문제
- 현재 상황에서 redirect를 dynamic하게 만들 수 있는 방법이 없음
- 훅(beforeEnter), 해당 컴포넌트에서 watch($route)활용 등 사용해봤지만 불가능
- 근본적인 의문
- 텝메뉴 구조에서 router로 이동하는 방식이 맞는가?
- 텝메뉴 구조는 router 사용 X.
- Component, keep-alive 태그 활용하는 것이 확장성, 커스텀면에서 훨씬 좋을 것이라고 생각
- 현재 Redirect 사용방식이 맞는가?
- 현재는 처음 어떤 페이지가 보일지 default component를 정해주는 느낌으로 사용중
- redirect는 계정 로그인 연동시 (ex> 인프런 깃헙계정 로그인 등), 또는 잘못 들어왔을시 메인 페이지로.. 이런 경우에만 쓰는 것이 맞다고 생각
- 텝메뉴 구조에서 router로 이동하는 방식이 맞는가?
- 결론
- 구조 자체를 수정해야됨
- 하지만 이때 또 문제가 있음
- 각 컴포넌트별 $route 데이터를 활용해 처리한 로직에 대해 확인 및 수정
- 현재 티팩 페이지 설계를 보면 라우터에 해당 페이지의 높이를 auto로 잡는지 아니면 100%로 하는지 설정
- 이 부분도 component 태그에 어떤 컴포넌트가 불러와지느냐에 따라 달라지도록 수정해야됨
- 전체적인 구조를 수정하면서 각 컴포넌트들의 로직도 수정해야됨 (시간 오래걸림)
- main (/service/:serviceId)
- Redirect > home
- home ( home )
- Part ( part/:id )
- Redirect > StatusView
- StatusView ( status )
- Redirect > WorkStatus
- WorkStatus ( work )
- AlarmStatus ( alarm )
- DeviceStatus ( info )
- DocumentStatus ( doc )
- DeliveryStatus ( delivery )
- TransitStatus ( transport )
- Redirect > TransitControl
- TransitControl ( control )
- TransitCurrentStatus ( status )
- ListView ( list )
- Redirect > WorkList
- WorkList ( work )
- AlarmList ( alarm )
- Statistics ( info )
- DocumentList ( doc )
- DeliveryList ( delivery )
- TransitList ( transport )
- Redirect > TransitListComplete
- TransitListComplete ( complete )
- TransitListCancel ( cancel )
- Member ( member )
- SettingView ( setting )
- Redirect > AlarmSetting
- AlarmSetting ( alarm )
- DeviceSetting ( info )
- DocumentSetting ( doc )
- DeliverySetting ( delivery )
- PartTransport ( transport )
- Redirect > PartTransportSearchList
- PartTransportSearchList ( management )
- PartTransportSearchOne ( management/:vehicleSeq )
- PartTransportCreateEach ( createEach )
- PartTransportCreateBundle ( createBundle )
- PartTransportModify ( modify/:vehicleSeq )