Vue는 내부적으로 Virtual DOM을 사용해서 변경된 부분만 효율적으로 업데이트한다.
예를 들어 v-for를 사용하면 :key를 적용하는데, 리스트의 데이터가 변경되면 어떤 항목이 추가, 삭제 등이 되었는지 파악하여 최소한 DOM조작으로 업데이트를 한다.
그 외에 특정 컴포넌트를 강제로 리렌더링할 때 key를 사용하는데, 컴포넌트의 key값을 변경하면 Vue는 이를 새로운 컴포넌트 인스턴스로 인식하여 기존 컴포넌트를 제거한 다음 새로운 컴포넌트를 생성한다.
unmount 후 새로운 인스턴스를 생성(mount)key가 없다면 위치 기준으로 요소를 비교하기에 리렌더링 오류가 생길 수 있다.
<apexchart :key="chartKey" :options="chartOptions" :series="series" type="area" height="350" />
const forceRerender = () => {
chartKey.value += 1; // key 변경 → 새로운 apexchart 컴포넌트 생성
};
[ 단점 ]