Vue 구성 요소 소품의 기본값 및 사용자가 소품을 설정하지 않았는지 확인하는 방법은 무엇입니까?


139

1. Vue 2에서 컴포넌트 소품의 기본값을 어떻게 설정합니까? 예를 들어, 다음과 같이 movies사용할 수 있는 간단한 구성 요소가 있습니다.

<movies year="2016"><movies>



Vue.component('movies', {
    props: ['year'],

    template: '#movies-template',
    ...
}

그러나 사용자가 다음을 지정하지 않으면 year:

<movies></movies>

그런 다음 구성 요소는 year소품에 대해 일부 기본값을 사용합니다 .

2. 또한 사용자가 소품을 설정하지 않았는지 확인하는 가장 좋은 방법은 무엇입니까? 이것이 좋은 방법입니까?

if (this.year != null) {
    // do something
}

또는 아마도 :

if (!this.year) {
    // do something
}

?

답변:


231

Vueprops를 객체로 만들어 기본값 proptype직접 지정할 수 있습니다 ( https://vuejs.org/guide/components.html#Prop-Validation 참조 ).

props: {
  year: {
    default: 2016,
    type: Number
  }
}

잘못된 유형이 전달되면 오류가 발생하고 콘솔에 기록됩니다. 여기에 바이올린이 있습니다.

https://jsfiddle.net/cexbqe2q/


2
두 번째 질문은 어떻습니까 (더 많은 JavaScript 질문입니다). 사용자가 소품을 설정하지 않았는지 확인하는 가장 좋은 방법은 무엇입니까? 이것이 좋은 방법 입니까 if (this.year != null) , 아니면 아마도 : if (!this.year)또는? 감사!
PeraMika

1
기본값을 설정하면 기본값을로 설정하지 않으면 소품이 항상 설정됩니다 null. 그것이 다른 논리를 수행해야 if (this.year != null)하거나 그렇게하는 방법이라면 if (!this.year).
craig_h 2016

36

이것은 오래된 질문이지만 질문의 두 번째 부분과 관련하여 사용자가 소품을 설정 / 설정하지 않은지 어떻게 확인할 수 있습니까?

검사 this구성 요소 내에서, 우리가 this.$options.propsData. 소품이 여기에 있으면 사용자가 명시 적으로 설정 한 것입니다. 기본값은 표시되지 않습니다.

이는 프롭이 함수 인 경우와 같이 실제로 값을 기본값과 비교할 수없는 경우에 유용합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.