개발Story

https://vuejs.org/guide/essentials/list.html#maintaining-state-with-key

 

List Rendering | Vue.js

 

vuejs.org

Vue에서는 v-for를 사용할 경우 key 속성을 바인딩하도록 가이드 되어있다.

key속성을 바인딩 하는 이유에 대해 랜더링과 관련하여 알아보자.

[in place patch 전략]

VUE는 메모리를 최적하 하기위해 DOM을 재사용한다.

DOM이 바뀌어야할 부분만 처리하고 DOM을 재사용한다.

DOM 재사용 측면에서는 우수하나 문제을 일으킨다.

[이슈 : 배열의 랜더링]

랜더링한 배열의 순서가 바뀌면 in place patch전략을 사용하기 때문에 변경 부분만 patch를 하게된다.

변경된 부분에 한해서만 patch가 일어나니, 랜더링한 배열의 순서가 새로운 배열의 순새대로 랜더링이 일어나지 않는다.

[결론: 상태유지 key사용]

Vue에 힌트를 주어 각 노드의 ID를 추적하고 기존 요소를 재사용하고 재정렬하려면 각 항목에 고유한 속성을 제공해야 합니다 .

<template v-for="todo in todos" :key="todo.name">
  <li>{{ todo.name }}</li>
</template>

 * key값에는 index를 사용하지 않는다. key에 idnex를 사용하면 index는 요소에 속한 값이 아니고 랜더링에 따라 바뀌는 가변성있는 값이기 때문이다.

 

https://goodteacher.tistory.com/525

 

v-for와 key

Vue에서 v-for를 사용할 때는 key 속성을 바인딩하도록 가이드 한다. 이번 포스트에서는 그 이유에 대해서 살펴보자. https://vuejs.org/guide/essentials/list.html#maintaining-state-with-key List Rendering | Vue.js vuejs.org

goodteacher.tistory.com

 

'vue.js > 문법' 카테고리의 다른 글

[VUE] composition api 배경.  (0) 2023.03.05
[Vue] Mixins & Extends  (0) 2022.12.11
[Vue]Props & $emit()  (0) 2022.11.02
[Vue]Computed 와 Watch 사용예제  (0) 2022.02.03
profile

개발Story

@슬래기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!