반응형
Vue + Vuex: 형식 입력 데이터
몇 가지 예에서 영감을 받아 특정 방법으로 값을 포맷하는 커스텀 컴포넌트를 작성하려고 합니다.
컴포넌트는 다음과 같습니다.
<template>
<input
type="text"
v-model="inputValue"
/>
</template>
<script type="text/javascript">
import {formatPhoneNumber} from '~/utils/string';
export default {
computed: {
inputValue: {
get() {
return formatPhoneNumber(this.value)
},
set(value) {
this.$emit('input', formatPhoneNumber(value))
}
}
},
}
</script>
Vuex를 사용하고 있는데 부모 컴포넌트에서는 다음과 같이 컴포넌트를 호출합니다.
<PhoneInput :value="cellPhoneNumber" class="input" @input="addCellPhoneNumber" />
computed: {
cellPhoneNumber() {
return this.$store.state.identity.cellPhoneNumber;
},
},
methods: {
addCellPhoneNumber: function(phoneNumber) {
this.$store.commit('identity/addCellPhoneNumber', phoneNumber)
},
}
그set
부품은 작동하여 스토어로 보내지지만 데이터는 컴포넌트로 반환됩니다.cellPhoneNumber
호출되었지만 호출되지 않았습니다.inputValue#get
.
왜냐하면 제가 이걸 쓰는 것과 관련이 있을 수도 있기 때문에@input/:value
상위 컴포넌트에서 하위 컴포넌트에서도 사용하려고 했습니다.
<template>
<input
@input="formatValue"
type="text"
:value="formattedValue"
/>
</template>
<script type="text/javascript">
import {formatPhoneNumber} from '~/utils/string';
export default {
computed: {
formattedValue: function(){
return formatPhoneNumber(this.value)
},
},
methods: {
formatValue(e) {
this.$emit('input', formatPhoneNumber(e.target.value))
}
}
}
</script>
성공하지 못하면 같은 일이 벌어진다.
뭐가 잘못됐는지 누가 좀 말해줄래?
@ohgodwhy가 댓글에 언급했듯이:
놓치셨군요
prop
가 기대하는 컴포넌트의 정의this.value
반응하지 않습니다.
언급URL : https://stackoverflow.com/questions/59253892/vue-vuex-format-input-data
반응형
'programing' 카테고리의 다른 글
C에 문자열 타입이 있나요? (0) | 2022.08.15 |
---|---|
Apache Camel이 정확히 무엇입니까? (0) | 2022.08.15 |
가장 좋은 연습 Vuex 모듈 분리하는 것입니다? (0) | 2022.08.15 |
Vuetify 자동 완성 첫 번째 결과만 표시됨 (0) | 2022.08.14 |
밝은 테마와 어두운 테마 간의 Vuetify 전환(vuex 사용) (0) | 2022.08.14 |