Vue Study

Vue3 - v model

2020. 11. 8. 15:08
λͺ©μ°¨
  1. πŸ“Œ λͺ©μ°¨
  2. πŸ“Œ Introduction
  3. πŸ“Œ v-model(value, event)
  4. πŸ“Œ v-model argument
  5. πŸ“Œ mutiple v-model
  6. πŸ“Œ Conclusion
  7. πŸ“Œ Reference
λ°˜μ‘ν˜•

πŸ“Œ λͺ©μ°¨

  • 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 3 곡식 λ¬Έμ„œ
λ°˜μ‘ν˜•

'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
  1. πŸ“Œ λͺ©μ°¨
  2. πŸ“Œ Introduction
  3. πŸ“Œ v-model(value, event)
  4. πŸ“Œ v-model argument
  5. πŸ“Œ mutiple v-model
  6. πŸ“Œ Conclusion
  7. πŸ“Œ Reference
'Vue Study' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • Vue2 ClientOnly μ»΄ν¬λ„ŒνŠΈ μ œμž‘κΈ°
  • Vue2 λΉŒλ“œ νƒ€μž„ μ΅œμ ν™”
  • Vue3 - teleport
  • Vue3 - Provide/Inject
eddie0329
eddie0329
Front-end Developer
λ°˜μ‘ν˜•
eddie0329
Eddie Sunny's Blog
eddie0329
전체
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기 (100)
    • Summary of Book (0)
    • Vue Study (11)
    • Vue TDD (9)
    • Vue BDD (5)
    • Design Pattern (9)
    • Javascript Study (3)
    • React Study (15)
    • React TDD (1)
    • Vue Storybook (2)
    • Refactoring (0)
    • Graphql_Apollo (3)
    • Svelte (8)
    • Open Source (1)
    • D3 (4)
    • Typescript (1)
    • CSS (2)
    • Android (0)
    • Java (0)
    • Kotlin (0)
    • μž‘λ‹΄ (0)
    • Swift (19)
    • Rust (2)
    • νšŒμ‚¬μ΄μ•ΌκΈ° (2)
    • ReactNative Study (2)
    • Vitest (0)

λΈ”λ‘œκ·Έ 메뉴

  • Home

곡지사항

인기 κΈ€

νƒœκ·Έ

  • vue tdd
  • javascript pattern
  • Javascript
  • Nextjs
  • jest
  • svelte
  • vue cypress
  • apollo
  • react
  • vue storybook
  • TypeScript
  • BDD
  • Vue test
  • TDD
  • react useRef
  • swift
  • vue bdd
  • CSS
  • slot νŒ¨ν„΄
  • Vue
  • Design Pattern
  • vue3
  • client only
  • Kotlin
  • storybook6
  • react-component-slot
  • Cypress
  • D3
  • React Native
  • swift5

졜근 λŒ“κΈ€

졜근 κΈ€

hELLO Β· Designed By μ •μƒμš°.
eddie0329
Vue3 - v model
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”

단좕킀

λ‚΄ λΈ”λ‘œκ·Έ

λ‚΄ λΈ”λ‘œκ·Έ - κ΄€λ¦¬μž ν™ˆ μ „ν™˜
Q
Q
μƒˆ κΈ€ μ“°κΈ°
W
W

λΈ”λ‘œκ·Έ κ²Œμ‹œκΈ€

κΈ€ μˆ˜μ • (κΆŒν•œ μžˆλŠ” 경우)
E
E
λŒ“κΈ€ μ˜μ—­μœΌλ‘œ 이동
C
C

λͺ¨λ“  μ˜μ—­

이 νŽ˜μ΄μ§€μ˜ URL 볡사
S
S
맨 μœ„λ‘œ 이동
T
T
ν‹°μŠ€ν† λ¦¬ ν™ˆ 이동
H
H
단좕킀 μ•ˆλ‚΄
Shift + /
⇧ + /

* λ‹¨μΆ•ν‚€λŠ” ν•œκΈ€/영문 λŒ€μ†Œλ¬Έμžλ‘œ 이용 κ°€λŠ₯ν•˜λ©°, ν‹°μŠ€ν† λ¦¬ κΈ°λ³Έ λ„λ©”μΈμ—μ„œλ§Œ λ™μž‘ν•©λ‹ˆλ‹€.