ค่าเริ่มต้นสำหรับอุปกรณ์ประกอบฉาก Vue และวิธีตรวจสอบว่าผู้ใช้ไม่ได้ตั้งค่าเสาหรือไม่?


150

1.ฉันจะตั้งค่าเริ่มต้นสำหรับส่วนประกอบ prop ใน 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
}

เหรอ?

คำตอบ:


251

Vueช่วยให้คุณระบุค่าเริ่มต้นpropและtypeโดยตรงโดยการสร้างอุปกรณ์ประกอบฉากเป็นวัตถุ (ดู: 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

41

นี่เป็นคำถามเก่า แต่เกี่ยวกับส่วนที่สองของคำถามคุณจะตรวจสอบได้อย่างไรว่าผู้ใช้ตั้งค่า / ไม่ได้ตั้งค่าเสาหรือไม่?

การตรวจสอบภายในองค์ประกอบที่เรามีthis this.$options.propsDataหากมีเสาอยู่ที่นี่แสดงว่าผู้ใช้ตั้งค่าไว้อย่างชัดเจน ไม่แสดงค่าเริ่มต้น

สิ่งนี้มีประโยชน์ในกรณีที่คุณไม่สามารถเปรียบเทียบค่าของคุณกับค่าเริ่มต้นได้เช่นหาก prop เป็นฟังก์ชัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.