반응형
Vuejs의 입력값에 소품을 전달하는 방법
상위 컴포넌트를 카트로 가지고 있다.여기서 수량을 정의했으며 이 수량을 자성분의 입력 값인 카운터로 전달하려고 합니다.다음은 전달 방법이고 다음은 부모 구성 요소인 카트입니다.
<Counter quantity="item.quantity"/>
그리고 여기 내 자식 컴포넌트 카운터:
<template>
<div id="counter">
<button class="minus" @click="countDown"><i :class="quantity == 0 ? 'disabled' : ''" class="fas fa-minus"></i></button>
<div class="count-number"><input class="counter-content" type="number" v-model="quantity"></div>
<button class="plus" @click="countUp"><i class="fas fa-plus"></i></button>
</div>
</template>
<script>
export default {
props: {
quantity: Number
},
methods: {
countUp() {
this.quantity++;
},
countDown() {
if(this.quantity > 0) {
this.quantity--;
}
},
}
}
</script>
저는 Vue에 처음 와서 소품을 지나칠 때 뭔가 잘못하고 있는 것 같아요.그러니 이것 좀 도와주실 수 있나요?
시도합니다(콜론 기호 포함).
<Counter :quantity="item.quantity"/>
그냥 "아이템"이라는 문자열을 건네기 전에요quanity"
소품을 직접 수정하는군요.
countUp() {
this.quantity++;
},
countDown() {
if(this.quantity > 0) {
this.quantity--;
}
},
Vue에서는 이렇게 하는 것이 아닙니다.쌍방향 바인딩을 사용해야 합니다.
countUp() {
this.$emit('input', this.quantity+1)
}
countDown() {
this.$emit('input', this.quantity-1)
}
부모 컴포넌트:
<Counter :quantity="item.quantity" @input="(payload) => {item.quantity = payload}"/>
참고로 Vue 스타일가이드는 https://vuejs.org/v2/style-guide/#Multi-word-component-names-ential(카트=불량, MyCart=양호)이라는 여러 단어 구성 요소 이름을 사용할 것을 권장합니다.
소품에서 얻을 수 있는 가치를 바꿀 수 없기 때문에 변수를 만들어 소품을 장착했습니다.
먹어봐.
<Counter :quantity="item.quantity"/>
그리고.
<template>
<div id="counter">
<button class="minus" @click="countDown"><i :class="sum == 0 ? 'disabled' : ''" class="fas fa-minus"></i></button>
<div class="count-number"><input class="counter-content" type="number" v-model="sum"></div>
<button class="plus" @click="countUp"><i class="fas fa-plus"></i></button>
</div>
</template>
<script>
export default {
props: {
quantity: Number
},
data: () => ({
sum: 0
}),
mounted() {
this.sum = this.quantity;
},
methods: {
countUp() {
this.sum++;
},
countDown() {
if(this.sum > 0) {
this.sum--;
}
},
}
}
</script>
언급URL : https://stackoverflow.com/questions/69041173/how-to-pass-props-to-input-value-in-vuejs
반응형
'programing' 카테고리의 다른 글
C 프로그래밍에서의 보이드 포인터의 개념 (0) | 2022.06.17 |
---|---|
혼합 데이터 유형(int, float, char 등)을 어레이에 저장하는 방법은 무엇입니까? (0) | 2022.06.17 |
C99 부울 데이터 타입? (0) | 2022.06.17 |
연결된 데이터가 변경된 후 Vue 구성 요소가 즉시 업데이트되지 않음 (0) | 2022.06.17 |
C89, C90 또는 C99의 모든 기능에 시제품이 필요합니까? (0) | 2022.06.17 |