v-model 을 교묘 하 게 활용 하여 부자 구성 요소 의 전 가 를 실현 하 는 방법 예제
Vue 를 잘 아 는 친구 들 은 v-model 이 Vue 의 큰 특색 이라는 것 을 알 고 양 방향 데이터 연결 을 실현 할 수 있 습 니 다.그러나 본질 적 으로 문법 사탕 에 불과 하고 사용자 의 입력 사건 을 감청 하여 데 이 터 를 업데이트 하 는 일 을 맡 는 다.
다음은 Vue 공식 문서 에서 발췌 한 것 입 니 다.
v-model 은 내부 에서 서로 다른 속성 을 서로 다른 입력 요소 로 사용 하고 서로 다른 이 벤트 를 던 집 니 다.
보통 하위 구성 요소 의 한 변 수 를 업데이트 하고 부모 구성 요 소 를 알려 야 할 때 하위 구성 요소 가 사건 을 촉발 하고 부모 구성 요소 가 이 사건 을 감청 해 야 합 니 다.
그러나 위의 v-model 의 실현 원 리 를 숙지 한 후에 우 리 는 이 원 리 를 교묘 하 게 활용 할 수 있다(v-model 은 내부 에서 서로 다른 속성 을 서로 다른 입력 요소 로 사용 하고 서로 다른 사건 을 던 질 수 있다).
방법 총화:
1.하위 구성 요 소 는 value 를 props 속성 으로 설정 하고 value 값 을 주동 적 으로 바 꾸 지 않 습 니 다.
2.하위 구성 요 소 는 this.$emit('input','updateValue')를 통 해 updateValue 값 을 부모 구성 요소 에 전달 합 니 다.
3.부모 구성 요 소 는 v-model="localValue"를 통 해 로 컬 변 수 를 연결 하면 하위 구성 요소 value 값 과 부모 구성 요소 updateValue 값 을 동기 화하 여 업데이트 할 수 있 습 니 다.
예 를 들다
하위 구성 요소
하위 구성 요 소 는 button 을 포함 하고 value 속성 을 props 로 설정 합 니 다(v-model 은 value 속성 을 사용 하기 때 문 입 니 다).
button 을 누 르 면 sum 값 에 1 을 추가 하고 this.$emit('input',+sum)를 통 해 업 데 이 트 된 값 을 부모 구성 요소 에 전달 합 니 다.(전제:부모 구성 요소 에 전달 하 는 값 은 반드시 value 에 부여 하고 싶 습 니 다)
<template>
<div>
<button @click="increase" style="border: 1px solid black">increase</button>
</div>
</template>
<script>
let sum = 0
export default {
name: 'vmodel',
props: {
value: {
type: Number,
default: 0
}
},
methods: {
increase () {
this.$emit('input', ++sum)
console.log('value1', this.value)
setTimeout(() => {
console.log('value2', this.value)
}, 50)
}
}
}
</script>
부모 구성 요소부모 구성 요소 에서 v-model 을 통 해 로 컬 변 수 를 연결 하면 하위 구성 요소 의 동기 화 업 데 이 트 를 실현 할 수 있 습 니 다.
<div>
<increase v-model="rangeValue"></increase>
<p>value:{{rangeValue}}</p>
</div>
<script>
data () {
return {
rangeValue: 0
}
}
</script>
실제로 이 과정 은 우선 하위 구성 요소 가$emit('input')를 통 해 부모 구성 요소 의 로 컬 변 수 를 업데이트 한 다음 하위 구성 요소 의 value 속성 이 props 를 통 해 업 데 이 트 됩 니 다.총결산
이 방식 은 하위 구성 요소 의 전송 에 특히 적합 합 니 다(하위 구성 요소 동기 화 업데이트)
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
v-모델 원리 및 사용자 정의 구성 요소의 실현v-모델을 언급하면 데이터의 양방향 귀속을 생각하지만 그 실현 원리는 무엇일까? 기본 양식에서 다음을 수행합니다. 다음과 같습니다: (input에value 속성 값을 데이터name로 바꾼 다음 input에input ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.