ভিউ উপাদান উপাদানগুলির জন্য ডিফল্ট মানগুলি এবং কোনও ব্যবহারকারী প্রপ সেট আপ না করে কিনা তা কীভাবে পরীক্ষা করবেন?


139

1. ভ্যু 2-তে আমি কীভাবে কোনও উপাদান প্রোপের জন্য ডিফল্ট মান সেট করতে পারি? উদাহরণস্বরূপ, একটি সাধারণ moviesউপাদান রয়েছে যা এইভাবে ব্যবহার করা যেতে পারে:

<movies year="2016"><movies>



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

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

তবে, যদি কোনও ব্যবহারকারী নির্দিষ্ট করে না year:

<movies></movies>

তারপরে উপাদানটি yearপ্রোপের জন্য কিছু ডিফল্ট মান গ্রহণ করবে ।

২. এছাড়াও, কোনও ব্যবহারকারী যদি প্রপ সেট না করে থাকে তা যাচাই করার সর্বোত্তম উপায় কী? এটি কি ভাল উপায়:

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

অথবা এটি হতে পারে:

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

?

উত্তর:


231

Vueপ্রপসকে কোনও অবজেক্ট তৈরি করে আপনাকে সরাসরি একটি ডিফল্ট propমান নির্দিষ্ট করার জন্য অনুমতি দেয় type(দেখুন: https://vuejs.org/guide/compferences.html#Prop-Vidation ):

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

যদি ভুল টাইপটি পাস হয়ে যায় তবে এটি একটি ত্রুটি ছুঁড়ে ফেলে এবং এটি কনসোলে লগ করে, এখানে হুটোহুড়ি:

https://jsfiddle.net/cexbqe2q/


2
দ্বিতীয় প্রশ্ন (এটি আরও জাভাস্ক্রিপ্ট প্রশ্ন) সম্পর্কে কী: কোনও ব্যবহারকারী প্রস্তাবটি সেট না করে কিনা তা যাচাই করার সর্বোত্তম উপায় কী? এটি কি ভাল উপায়: if (this.year != null) বা সম্ভবত এটি: if (!this.year)বা? ধন্যবাদ!
প্যারামিকা

1
আপনি যদি কোনও ডিফল্ট মান সেট করেন তবে আপনি পূর্বনির্ধারিত সেট না করা অবধি সর্বদা সেট হয়ে যাবে null। যদি এটি হয় তবে আপনাকে অন্য কিছু যুক্তি সম্পাদন করতে হবে if (this.year != null)বা if (!this.year)যেতে হবে।
ক্রেগ_h

36

এটি একটি পুরানো প্রশ্ন, তবে প্রশ্নের দ্বিতীয় অংশটি সম্পর্কিত - আপনি ব্যবহারকারী কীভাবে সেট / সেট করেন নি তা পরীক্ষা করে দেখতে পারেন?

thisউপাদান মধ্যে পরিদর্শন , আমাদের আছে this.$options.propsData। প্রোপ এখানে উপস্থিত থাকলে, ব্যবহারকারী তা স্পষ্টভাবে সেট করেছেন; ডিফল্ট মানগুলি প্রদর্শিত হয় না।

এটি এমন ক্ষেত্রে কার্যকর যেখানে আপনি নিজের মানটিকে তার ডিফল্টর সাথে তুলনা করতে পারবেন না, উদাহরণস্বরূপ যদি প্রপ কোনও ফাংশন হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.