Vue bileşen sahne donanımı için varsayılan değerler ve kullanıcının pervane ayarlayıp ayarlamadığını nasıl kontrol edebilirim?


139

1. Vue 2'de bir bileşen desteği için varsayılan değeri nasıl ayarlayabilirim? Örneğin, moviesbu şekilde kullanılabilecek basit bir bileşen vardır:

<movies year="2016"><movies>



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

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

Ancak, bir kullanıcı yearşunları belirtmezse :

<movies></movies>

bileşen yearpervane için bazı varsayılan değerler alacaktır .

2. Ayrıca, bir kullanıcının pervane ayarlayıp ayarlamadığını kontrol etmenin en iyi yolu nedir? Bu iyi bir yol mu:

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

ya da belki bu:

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

?

Yanıtlar:


231

Vuevarsayılan bir propdeğer belirlemenize izin verir ve typedoğrudan bir nesne oluşturarak (bkz: https://vuejs.org/guide/components.html#Prop-Validation ):

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

Yanlış tip geçilirse, bir hata atar ve konsolda kaydeder, işte keman:

https://jsfiddle.net/cexbqe2q/


2
İkinci soruya ne dersiniz (bu daha fazla JavaScript sorusudur): Bir kullanıcının pervane ayarlayıp ayarlamadığını kontrol etmenin en iyi yolu nedir? Bu iyi bir yol mu: if (this.year != null) belki de bu: if (!this.year)veya? Teşekkürler!
PeraMika

1
Varsayılan bir değer ayarlarsanız, varsayılanı ayarlamadığınız sürece prop her zaman ayarlanır null. Başka bir mantık gerçekleştirmek için ihtiyacınız olan şey buysa if (this.year != null)veya if (!this.year)gidilecek yol ise.
craig_h

36

Bu eski bir soru, ancak sorunun ikinci kısmı ile ilgili olarak - kullanıcının bir pervane ayarlayıp ayarlamadığını nasıl kontrol edebilirsiniz?

thisBileşen içinde teftiş ediyoruz this.$options.propsData. Prop burada varsa, kullanıcı açıkça ayarladı; varsayılan değerler gösterilmez.

Bu, değerinizi gerçekten varsayılanıyla karşılaştıramayacağınız durumlarda yararlıdır, örneğin prop bir işlevse.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.