Vue.js에서 컴포넌트의 props 검증은 어떻게 하나요?
_____A1: props 검증은 부모 컴포넌트가 자식 컴포넌트에 전달하는 데이터(props)가 올바른 타입과 형식을 가졌는지를 미리 정의하고 확인하는 기능입니다. 이를 통해 컴포넌트의 안정성과 예측 가능성을 높일 수 있습니다.
Q2: Vue.js에서 props를 어떻게 선언하나요?
A2: props는 컴포넌트 옵션에 `props` 속성으로 선언합니다. 간단히 문자열 배열로 선언하거나, 객체 문법을 사용해 타입과 검증 규칙을 상세히 지정할 수 있습니다.
```js
props: ['title', 'count']
// 또는
props: {
title: String,
count: Number
}
```
Q3: Vue.js에서 props 타입 검증은 어떻게 하나요?
A3: props를 객체 형태로 선언하면서 `type` 속성에 JavaScript 생성자 함수를 지정하여 타입을 검증합니다.
```js
props: {
title: {
type: String
},
count: {
type: Number
}
}
```
Q4: 필수 props를 지정하려면 어떻게 하나요?
A4: `required: true` 옵션을 포함하면 필수 props로 지정할 수 있습니다. 부모 컴포넌트가 해당 props를 전달하지 않으면 경고가 발생합니다.
```js
props: {
title: {
type: String,
required: true
}
}
```
Q5: props에 기본값을 설정하는 방법은?
A5: `default` 옵션을 추가하면 props가 부모로부터 전달되지 않았을 때 사용할 기본값을 지정할 수 있습니다.
```js
props: {
count: {
type: Number,
default: 0
}
}
```
Q6: 커스텀 검증 로직을 추가할 수 있나요?
A6: 네, `validator` 옵션에 함수 형태로 검증 로직을 구현할 수 있습니다. 함수는 true를 반환해야 통과됩니다.
```js
props: {
age: {
type: Number,
validator(value) {
return value >= 0 && value <= 120;
}
}
}
```
Q7: 여러 타입을 허용하려면 어떻게 하나요?
A7: `type`에 배열로 여러 생성자 함수를 전달합니다.
```js
props: {
value: {
type: [String, Number]
}
}
```
Q8: Vue 3와 Vue 2의 props 검증 방식에 차이가 있나요?
A8: 기본적으로는 유사하지만, Vue 3는 Composition API에서 `defineProps`를 사용하며, TS 지원과 더 세밀한 타입 검증이 가능해졌습니다. Options API에서는 크게 다르지 않습니다.
Q9: props 검증 실패 시 동작은 어떻게 되나요?
A9: 개발 환경에서 콘솔 경고(Warn)를 출력하며, 실제 런타임 에러를 발생시키지는 않습니다. 이는 개발 시점에서 문제를 알려주기 위한 목적입니다.
Q10: 예시 코드 전체
```js
export default {
props: {
name: {
type: String,
required: true
},
age: {
type: Number,
default: 18,
validator(value) {
return value >= 0 && value <= 150;
}
},
options: {
type: [Array, Object],
default() {
return [];
}
}
}
}
```
위와 같이 Vue.js에서는 props 객체를 활용해 타입, 필수 여부, 기본값, 커스텀 검증까지 세밀하게 지정하여 props 검증을 수행합니다.
작성자:
박수민 [비회원]
| 작성일자: 1년 전
2024-09-14 17:14:42
조회수: 179 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 179 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.