inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Typescript with Vue 실전 프로젝트

라우터 구조 잡기

안녕하세요! v-for(v-bind:key), slice() 관련 질문이 있어요!

666

아로마홈키퍼

작성한 질문수 10

2

안녕하세요! 매번 답변을 잘해주셔서 너무 감사합니다

v-for을 만드는 경우 :key를 설정해줘야한다고 알고 있습니다.
:key를 뭘로 또는 어떤걸로 설정하는게 좋나요?
랜덤한 유니크 값을 생성해서 넣어야 한다는 얘기도 있어서 궁금해서 여쭤봅니다!
여기서는 일단 id 값으로 넣었습니다.

두번째로 @Watch 로직을 만들때
this.data.slice().filter(...) 로 하시더라구요.
this.data.filter(...)도 동작을 하는데
slice()를 넣어주신 이유가, data가 any[] 이기때문에
무엇이 올지 모르니 일단 array로 만들어야겠다 라는 생각으로 하신걸까요?

vuejs

답변 3

3

성도희

안녕하세요!

1. v-for의 :key 관련

말씀해주신대로 유니크한 값을 넣어주어야합니다.
이는 Vue에서 개별 DOM 노드들을 추적하고 기존 엘리먼트를 재사용, 재정렬하기 위해서 입니다.
보통, 서버 통신해서 가져온 list array를 v-for로 표현할 때에는 
데이터마다 고유한 id값이 있어 그것을 활용하는 편입니다.

클라이언트에서 생성한 array를 표현할 경우에는 array index + 랜덤한 해시값 or id 값으로 key 값을 만들기도 합니다.

어찌됬든 "중복되지 않는 유니크한 값"이 중요한 키포인트에요 ^^

2. slice 관련

이부분은 제가 강의를 제작할 당시 착각한 부분이 있는데,
javascript array api들 중 콜백 함수에서 호출한 array에 직접 영향을 끼치는 api들이 있습니다.
예를 들어 map 같은 경우가 그렇구요.
그 경우를 방지하기 위해서 slice()를 사용해 새로운 배열을 생성한 후,
기존 배열에는 영향이 없도록 하는것이 저의 의도였습니다.


그러나 filter의 경우에는 map과 달리 기존 배열에 영향을 끼치지 않으니
글쓴님께서 말씀해주신 코드(this.data.filter(...))가 더 올바르다고 할 수 있습니다.


혼동을 드려 대단히 죄송합니다 ㅠ.ㅠ

1

haemil

저도 이 부분이 궁금했는데 질문자님과 도희님께 감사드립니다.

1

아로마홈키퍼

친절한답변감사합니다.

소스 공유좀 해주세요

0

251

0

target null 에러뜨시는 분들

0

329

0

라우터 구조잡기 소스

0

284

0

새로 추가한 인스턴스 상태 관리

0

245

0

App.vue의 $store

0

191

0

npm run serve 에러

0

220

0

Cannot find module '@/components/message.vue' or its corresponding type declarations.

0

1150

2

prop !

0

193

0

@ MutationActions

0

177

0

mapGetters 내 정의가 안되요 ㅠ

0

259

0

안녕하세요! @Prop() readonly id(느낌표):string; 에서 !(느낌표) 를 찍는 이유가 궁금합니다 :)

0

224

0

store 사용 방법 관련 질문입니다.

0

239

1

moduleA.store.ts내에서 RootState가 하는일은 무엇인가요?

0

178

0

removeItem 에서 element 가 하나 남았을 때 삭제가 되지 않는 문제

0

369

2

Property '$route' does not exist on type 'ItemList'. 이 에러는 무엇인가요..?

0

861

1

Cannot find module '@/components/message.vue'.

0

2869

6

@Action, @Mutation 등으로 지정된 변수의 타입

0

227

1

안녕하세요. 강의 잘 들었습니다.

0

166

0

Axios Post보낼때 어떤 식으로 구성하는게 좋을까요?

0

660

1

에러 표시 질문이요!

1

402

3

vuex-module-decorators 보다 오리지널 모듈 형태를 선호하시는 이유가 무엇이신가요?

1

377

2

안녕하세요. 초기 셋팅시 질문있습니다.

1

294

2

안녕하세요! Vuex, actions 질문이 있습니다.

1

302

2

클래스 속성 에러는 무엇인가요??

1

171

1