
html에는 데이터를 저장할 수 있는 속성을 제공한다. 은근히 유용하게 사용되는 해당 기능을 알아 보도록 하자.
일단 해당 속성을 사용하기 전에 "이걸 어디에 사용하는데요?"라는 질문을 해소하는 것이 좋을 것 같다.
data-속성은 사용하기 매우 쉽고 간단하다. 특히, JS뿐만 아니라 CSS에서 data 속성의 값을 가져올 수 있다는 것이 큰 장점이였다.
나는 사이드 프로젝트에서 해당 기능을 다음과 같은 경우에 사용했다.
:before 선택자에 content속성을 태그의 데이터에 맞게 동적으로 설정하기 위해 사용이 뿐만 아니라 간단한 데이터를 태그에 삽입하여 사용하는 것은 자유도가 높다. 따라서, 사용할 수 있는 곳이 매우 다양할 것이다.
html 태그에 data- 속성을 사용하면 커스텀 데이터를 저장할 수 있다.
<div data-user-name="홍길동" class="component">
// 자식 컴포넌트 또는 태그
</div>
.component:hover::before {
...
content: attr(data-user-name)"님의 컴포넌트"
...
}
const component = document.querySelector(".component");
const user_name = component.dataset.userName;
console.log(user_name); // 홍길동
data-속성은 다음과 같은 단점을 가지고 있다. 정말 필요한 곳에 사용하는 것을 권장한다.
data-를 인덱싱 하지 못하여 SEO에 지장을 준다..dataset을 지원하지 않아 getAttribute()를 사용해야 한다.특히나 JSX에서 map으로 data-속성의 사용을 남용하는 경우, 많은 데이터를 저장하는 경우는 DOM이 커지기 때문에 파싱과 렌더링 성능이 저하된다.
적절한 상황에만 data-속성을 사용하도록 하자.