[Vue 살펴보면서 신기한점] - 동적 컴포넌트(Vue 2 이상)와 텔레포트(Vue 3 이상)
- 예시 1) 탭에 여러 버튼이 있고 각 버튼은 서로 다른 컴포넌트를 보여줌
selectedTab 데이터와 v-if를 이용해서 처리가능하지만 v-if 반복 성가심 → component 태그 이용- component 태그의 is 속성
- 컴포넌트 바꿀 때 이전 컴포넌트는 DOM에서 제거됨
→ keep-alive 래퍼 컴포넌트 이용하여 컴포넌트를 완전히 제거하지 않고 상태를 내부에서 캐시로 저장하도록 Vue에 알려줌
- 예시 2) dialog 태그와 open 속성을 이용해서 만든 커스텀 오버레이 - 모달
→ HTML Semantic/접근성 관점에서 모달 컴포넌트를 컴포넌트의 depth 깊이 위치시키는 것은 좋지 않음
전체 페이지에 오버레이되는 문제 발생 가능, 접근성/스타일링 side effect 발생 가능 ⇒ HTML root에 위치시켜야 함!- 텔레포트로 요소 쉽게 옮길 수 있음 (작은 최적화 방식)
- 탤레포트는 컴포넌트의 계층을 유지하면서 DOM의 구조를 조작하고 DOM에 추가되는 부분을 제어하기 위해 사용되는 또 다른 내장 컴포넌트
- to 속성 필요 (css selector)
teleport는 react-portal과 비슷한 것으로 보이고,
keep-alive/component는 react에서 조건 분기로 엘리먼트 처리에 대한건데 캐싱은 좋네요
참고) Vue 공식 스타일 가이드
반응형
'Aaron[에런] > 주절주절' 카테고리의 다른 글
리액트 배칭(Batching)의 모든 것 (0) | 2024.03.13 |
---|---|
AI 시대에서 생존하고 성공하는 방법 (0) | 2024.03.11 |
최근 FE의 생태계의 움직임 (feat. Next/React, Tailwind) (0) | 2024.03.11 |
앞으로의 블로그 운영 계획 (2) | 2024.03.11 |
[주절주절 #8] 활동 닉네임 변경 (2) | 2024.02.17 |
댓글