사용자 지정 구성 요소에 사용할 경우 v-model과 .sync의 차이점
구성 요소에 사용되는 v-model과 .sync의 차이점을 이해할 수 없다.
<my-component v-model="myVar">
V-모델은 변수(myVar)를 구성요소 속성 '값'에 바인딩하고 구성 요소에서 방출되는 '입력' 이벤트를 청취하여 변수 'myVar'를 업데이트하기 위한 속기다.
<my-component v-bind:prop1.sync="myVar">
.sync는 변수(myVar)를 구성 요소 속성에 바인딩하고(이 경우 prop1') 구성 요소에서 방출되는 'update:prop1' 이벤트를 청취하여 'myVar' 변수를 업데이트하기 위한 속기다.
기본적으로 v-model은 '값' 속성 및 '입력' 이벤트와만 작동하지만 그마저도 구성 요소의 '모델' 옵션을 사용하여 사용자 지정할 수 있다는 것을 알고 있다.
누군가 나에게 차이점이나 언제 무엇을 사용해야 하는지 설명해 준다면 좋을 것이다.
다음은 1) 수동 바인딩 + 이벤트 수신 2) .sync 3) v-model의 세 가지 다른 방법으로 동일한 구성 요소를 사용한 예입니다.
Vue.js 2의 경우 두 가지 모두 거의 동일한 작업을 수행한다. 단, 양방향 바인딩 사용.sync
더 다재다능하다.v-model을 구성 요소에 추가한 후 추가되었다. .sync
둘 이상의 받침대에 v-모델 로직을 사용할 수 있도록 허용한다.비교해보자:
<comp :value.sync="username" :age.sync="userAge" />
다음 항목으로 확장:
<comp :value="username" :age="userAge" @update:name="val => userName = val" @update:age="val => userAge = val" />
<comp v-model="userName" />
다음 항목으로 확장:
<comp :value="username" @input="val => username = val" />
우리가 볼 수 있는 차이점은 다음과 같다.
기본 소품명
v-model
항상 부르는 재산에 속박된다.value
.sync
여러 소품 사용 가능구성 요소에서 방출되는 이벤트 이름(
@update
을 위해.sync
그리고@input
을 위해v-model
)
의 매우 흥미로운 특징 중 하나.sync
물체를 특별 취급하는 것이다.그.sync
개체에 사용할 때 한정자가 한 번에 여러 개의 소품을 설정함(여기서 더 이상)
어떤 걸 쓰시겠습니까?그것은 속성을 사용하는 표준 패턴이다.value
구성 요소의 키 값 캐리어로서.이 상황에서 만약 있다면value
속성, 2-way 바인딩을 활성화한 후 사용v-model
. 다른 모든 경우 사용.sync
큰 차이가 없기 때문에 Vue 3에서 잠재적으로 이들을 병합할 계획이 있다.
https://github.com/vuejs/rfcs/pull/8
구성 요소에 양방향 바인딩의 자연적인 후보가 있는 경우v-model
그래서 텍스트 입력, 확인란 등은 모두v-model
마찬가지로 선택 개념을 가진 구성요소의 맥락에서 타당할 수 있다.당신은 사용할 수 있다.sync
대신에 그것은 일반적으로 다른 개발자들이 기대하는 것이 아니다.
Vue 2에서는 단 하나의 소품/이벤트만 연결할 수 있음v-model
하려면 를 여러 소품/이벤트에 대해 양방향 바인딩을 사용하려면sync
.
Vuetify에는 두 가지 구성 요소를 모두 사용하는 몇 가지 예가 포함되어 있다.v-model
그리고sync
예를 들어,v-autocomplete
:
https://vuetifyjs.com/en/components/autocompletes
이것은 사용한다.v-model
선택한 값에 대해 사용하지만sync
을 위해error
그리고search-input
.
'programing' 카테고리의 다른 글
형식화된 메시지, 개체 배열, 예외를 기록하는 방법 (0) | 2022.04.21 |
---|---|
왜 우리는 국가 관리를 위해 돌연변이, 세터, 게이터가 필요한가? (0) | 2022.04.21 |
VueJS 웹 앱에서 Google Maps API 사용 안 함 오류: utc_offset은 2019년 11월 현재 사용되지 않으며 2020년 11월에 실행 중지됨 (0) | 2022.04.20 |
vue에서 동적 구성요소를 사용하는 동안 성능을 향상시키는 방법 (0) | 2022.04.20 |
항상 0을 반환하는 Vue에서 로드 시 이미지 크기 계산 (0) | 2022.04.20 |