안녕하세요 상훈입니다.
지난 포스팅에서 부모 -> 자식 v-model 값을 전달할 수 있게 코딩하는 것을 언급하였었는데,
오늘은 여러 개의 v-model 을 props 로 내려주는 내용을 포스팅 하려고 합니다.
2023.06.12 - [FrontEnd/Vue.js] - [ Vue.js ] Component 에 v-model 값 적용하기 1(이전포스팅)
필요요소: 부모컴포넌트, 자식컴포넌트
마찬가지로 부모컴포넌트와 자식컴포넌트가 필요합니다.
<script setup>
import CustomInput from './CustomInput.vue'
import {ref} from 'vue'
const message = ref('')
const message2 = ref('')
</script>
<template>
메시지: {{ message }} <br/>
메시지2: {{ message2 }} <br />
<CustomInput v-model:message="message" v-model:message2="message2" />
</template>
자식 컴포넌트에 v-model 로 message, message2 를 각각 내려주었습니다.
<script setup>
const props = defineProps({
message: String,
message2: String
})
const emits = defineEmits(['update:message', 'update:message2'])
const updateInputs = (e, type) => {
emits(`update:${type}`, e.target.value)
}
</script>
<template>
<input
:value="message"
@input="updateInputs($event,'message')"
style="margin-top: 20px;"
/>
<textarea
:value="message2"
@input="updateInputs($event,'message2')"
></textarea>
</template>
defineProps 로 message, message1 을 받아오기
defineEmits 로 emit 을 설정해주기
@input 태그 이벤트에 updateInputs 메서드를 연동. 값이 변할 때마다 부모 컴포넌트로 값 상신해주기
이중에서 핵심은 @input 이벤트 태그라고 생각합니다.
v-model 을 쪼개보면 위 이미지와 같이 쪼개지는 것을 알 수 있습니다.
v-bind -> value
@input -> event (user-custom-event)
결과
코드 공유 - Vue Playground
[ Vue.js ] WatchEffect 사용하기 - example 활용 방식 확인하기 (0) | 2023.06.20 |
---|---|
[ Vue.js ] Component 에 v-model 값 적용하기 1 (0) | 2023.06.12 |
[ Vue.js ] slot 사용방법 (0) | 2023.06.09 |
[ Vue.js ] Modal 띄우기 / teleport 사용하여 Modal 창 띄우기 (0) | 2023.02.04 |
[ Vite / Vue3 / ts ] .env 파일 사용하는 방법 / how to use .env in vite, vue3, ts(typescript) (0) | 2023.01.17 |
댓글 영역