π λͺ©μ°¨
- Introduction
- v-model(value, event)
- v-model argument
- mutilple v-model
- Conclusion
- Reference
π Introduction
μλ νμΈμ. vue3μμ v-modelμ μλ‘μ΄ κΈ°λ₯λ€μ΄ μμ΄μ μ΄λ κ² ν¬μ€ν μ μμ±νκ² λμμ΅λλ€. ν΄λΉ μ½λλ μ¬κΈ°μνμΈ ν μ μμ΅λλ€.
π v-model(value, event)
μλ‘κ² λ°λ vue3μμλ μ΄μ propsλ‘ valueμ input μ΄λ²€νΈλ‘ v-modelμ μ¬μ©ν μ μμ΅λλ€.
value -> model-value
@input -> @update:model-value
λ‘ λ°λμμ΅λλ€.
<template>
<input type="text" :value="modelValue" @input="onInput" />
</template>
<script>
export default {
props: {
modelValue: {
type: String,
default: ""
}
},
methods: {
onInput(e) {
this.$emit('update:model-value', e.target.value);
}
}
}
</script>
π v-model argument
<template>
<MyName v-model:first-name="name"/>
</template>
μ΄λ°μμΌλ‘ nameμ μ§μ ν΄ μ€ μ μμ΅λλ€.
// MyName.vue
<template>
<input type="text" :value="firstName" @input="onInputFirstName">
</template>
<script>
export default {
props: {
firstName: {
type: String,
default: ''
}
},
methods: {
onInputFirstName(e) {
this.$emit('update:first-name', e.target.value);
}
}
}
κ·ΈλΌ propsλ‘λ modelValueλ‘ λ΄λ €μ€λκ²μ΄ μλ μ§μ λ nameμΌλ‘ λ΄λ €μ€κ² λ©λλ€. λν updateλ μ§μ λ μ΄λ¦μΌλ‘ updateλ₯Ό ν΄μ€ μ μμ΅λλ€.
π mutiple v-model
μμμ λ°°μ΄ v-model μ§μ μΌλ‘ μ΄μ μ¬λ¬κ°μ v-modelμ λ°μ μ μμ΅λλ€.
<template>
<MyName v-model:first-name="name" v-model:last-name="lastName"/>
</template>
<template>
<input type="text" :value="firstName" @input="onInputFirstName">
<input type="text" :value="lastName" @input="onInputLastName">
</template>
<script>
export default {
props: {
firstName: {
type: String,
default: ''
},
lastName: {
type: String,
default: ''
}
},
methods: {
onInputFirstName(e) {
this.$emit('update:first-name', e.target.value);
},
onInputLastName(e) {
this.$emit('update:last-name', e.target.value);
}
}
}
</script>
π Conclusion
μ΄λ²μλ v-modelμ λν΄μ μμ보μμ΅λλ€. vue2μ λ§μ λ³νκ° μμ§λ μμ§λ§ μλ‘μ΄ κΈ°λ₯λ€μ΄ μΆκ°λμ΄ ν¬μ€ν μ μμ±νκ² λμμ΅λλ€. νμ v-modelμ μ νκ°μ¬μΌν κΉ λΌλ μλ¬Έμ΄ μμλλ° μ΄λ κ² λμ΄ λ무 λ°κ°μ μ΅λλ€. κ·ΈλΌ λ€μ ν¬μ€ν μμ λ§λμ!
π Reference
'Vue Study' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Vue2 ClientOnly μ»΄ν¬λνΈ μ μκΈ° (0) | 2021.07.29 |
---|---|
Vue2 λΉλ νμ μ΅μ ν (0) | 2021.07.29 |
Vue3 - teleport (0) | 2020.11.08 |
Vue3 - Provide/Inject (0) | 2020.11.04 |
Vue3 - LifeCycle (0) | 2020.10.30 |