Vue 3 애플리케이션을 구축할 때 구성 요소를 통해 양식 입력을 관리하는 것이 일반적인 관행입니다. Vue의 강력한 기능 중 하나는 양방향 데이터 바인딩을 단순화하는 v-model 지시문입니다. 이 블로그 게시물에서는 사용자 정의 입력 구성 요소를 생성하고 v-model을 사용하여 해당 값을 상위 구성 요소에 바인딩하는 방법을 살펴보겠습니다.
Vue 3에서 v-model은 양식 입력 요소에 대한 양방향 데이터 바인딩을 생성하기 위한 약어입니다. 지시문은 입력 값을 데이터 속성에 바인딩하고 변경 사항을 수신하여 속성을 업데이트합니다.
<input v-model="password" />
위의 예에서 비밀번호 데이터 속성은 입력 값에 바인딩됩니다. 입력값이 변경되면 비밀번호 속성이 자동으로 업데이트됩니다.
BaseInputGroup이라는 재사용 가능한 입력 구성 요소를 생성한다고 가정해 보겠습니다. 구성 요소의 모양은 다음과 같습니다.
<template> <div class="flex flex-col text-white mx-5 md:mx-0 space-y-2 mb-2"> <label :for="labelFor"> {{ labelFor.toLocaleUpperCase() }} </label> <input :type="type" :name="name" @input="$updateInputValue" :value="modelValue" class="p-2 px-4 rounded-2xl bg-white/15 focus:outline-none focus:ring focus:border-blue-500" /> </div> </template> <script setup lang="ts"> import { defineProps, defineOptions, defineEmits } from 'vue' defineOptions({ inheritAttrs: false }) defineProps({ labelFor: { type: String, required: true }, name: { type: String, required: true }, type: { type: String, default: 'text' }, modelValue: { type: [String, Number], default: '' } }) // Emit an event to update the v-model in the parent component const emit = defineEmits(['update:modelValue']) const $updateInputValue = (event: Event) => { const input = event.target as HTMLInputElement emit('update:modelValue', input.value) } </script>
v-model이 포함된 상위 구성 요소에서 이 구성 요소를 사용하려면 모델을 상위 구성 요소의 데이터 속성에 바인딩하기만 하면 됩니다. 예는 다음과 같습니다.
<template> <BaseInputGroup labelFor="password" name="password" type="password" v-model="password" /> </template> <script setup lang="ts"> import { ref } from 'vue' import BaseInputGroup from './components/BaseInputGroup.vue' const password = ref('') </script>
Model Value Prop: modelValue prop은 입력 값을 나타냅니다. v-model을 통해 상위 구성요소에서 전달됩니다.
업데이트 내보내기: $updateInputValue 함수는 입력 이벤트를 수신하고 새 입력 값으로 update:modelValue 이벤트를 내보냅니다. 그러면 상위 구성 요소의 비밀번호 값이 업데이트됩니다.
상위 구성요소에 바인딩: 상위 구성요소에서 v-model 지시어는 비밀번호 데이터 속성에 바인딩되어 값이 항상 사용자 정의 입력 구성요소와 동기화되도록 합니다.
재사용성: 사용자 정의 입력 구성 요소를 애플리케이션 전체에서 재사용할 수 있어 코드 중복이 줄어듭니다.
관심 사항 분리: 입력 값을 처리하기 위한 논리가 구성 요소 내에 캡슐화되어 상위 구성 요소를 더욱 깔끔하고 핵심 기능에 집중하게 만듭니다.
사용자 정의: 상위 구성 요소에 영향을 주지 않고 유효성 검사, 다양한 입력 유형 또는 사용자 정의 스타일과 같은 추가 기능을 포함하도록 사용자 정의 입력 구성 요소를 쉽게 확장할 수 있습니다.
Vue 3에서 사용자 정의 구성 요소와 함께 v-model을 사용하는 것은 양식 입력 및 데이터 바인딩을 관리하는 강력한 방법입니다. update:modelValue 이벤트를 내보내면 구성 요소가 상위 구성 요소의 데이터 속성과 동기화된 상태를 유지하여 코드를 더욱 모듈화하고 유지 관리 가능하며 이해하기 쉽게 만들 수 있습니다.
이 패턴은 입력 처리 논리가 복잡하고 반복될 수 있는 대규모 애플리케이션에 특히 유용합니다. Vue 3의 구성 API와 v-model 지시문을 활용하면 코드베이스를 단순화하는 유연하고 재사용 가능한 구성 요소를 만들 수 있습니다.
위 내용은 Vue 3에서 v-model 바인딩을 사용하여 사용자 정의 입력 구성 요소 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!