Vue 'expose' Option
টিপ:
আপনার Vue সার্ভার পান
প্যারেন্ট কম্পোনেন্ট ব্যবহারের জন্য একটি পদ্ধতি উপলব্ধ করতে এক্সপোজ বিকল্প ব্যবহার করে।
Example
export default {
expose: ['createMessage'],
data() {
return {
message: ' '
}
},
methods: {
createMessage(msg) {
this.message += msg + ' '
}
}
}
নীচে আরো উদাহরণ দেখুন
সংজ্ঞা এবং প্রয়োগ
এক্সপোজ বিকল্পটি টেমপ্লেট রেফের মাধ্যমে মূল উপাদানের জন্য উপলব্ধ বৈশিষ্ট্যগুলি তালিকাভুক্ত করতে ব্যবহৃত হয়।
ডিফল্টরূপে, টেমপ্লেট refs ব্যবহারের মাধ্যমে সমস্ত চাইল্ড উপাদান বৈশিষ্ট্যগুলি মূল উপাদানের কাছে উপলব্ধ।
এর মানে হল যে যদি চাইল্ড কম্পোনেন্টের এক্সপোজ অপশন না থাকে এবং প্যারেন্ট কম্পোনেন্ট চাইল্ড কম্পোনেন্টে নেস্টেড অ্যাট্রিবিউট ref="childComp" ব্যবহার করে, তাহলে প্যারেন্ট কম্পোনেন্ট এই কোডটি দিয়ে চাইল্ড কম্পোনেন্টের ডেটা অ্যাট্রিবিউট 'মেসেজ' অ্যাক্সেস করতে পারে। $refs.childComp.message। (উদাহরণ 1 দেখুন)
কিন্তু এক্সপোজ বিকল্পটি ব্যবহার করার সময়, শুধুমাত্র এক্সপোজ বিকল্পে তালিকাভুক্ত বৈশিষ্ট্যগুলি পিতামাতার কাছে উপলব্ধ। (উদাহরণ 2 দেখুন)
আরো উদাহরণ
Example 1
এক্সপোজ বিকল্পটি চাইল্ড কম্পোনেন্টে ব্যবহার করা হয় না, তাই চাইল্ড কম্পোনেন্টের সমস্ত বৈশিষ্ট্য প্যারেন্ট কম্পোনেন্টের কাছে উপলব্ধ।
ChildComp.vue:
<template>
<div>
<h3>ChildComp.vue</h3>
<p>Message from parent component:</p>
<p id="pEl">{{ message }}</p>
</div>
</template>
<script>
export default {
data() {
return {
message: ' '
}
},
methods: {
createAlert() {
alert('This is an alert, from the child component')
}
}
}
</script>
<style scoped>
div {
border: solid black 1px;
padding: 10px;
max-width: 350px;
margin-top: 20px;
}
#pEl {
background-color: lightgreen;
font-family: 'Courier New', Courier, monospace;
}
</style>
App.vue:
<template>
<h2>Example expose Option</h2>
<p>The 'expose' option is not used, so all child properties are available to the parent by default, both the 'message' data property, and the 'createAlert()' method:</p>
<button v-on:click="{ this.$refs.childComp.message += 'Hello! '; }">Write 'Hello!'</button>
<button v-on:click="{ this.$refs.childComp.createAlert(); }">Create alert</button>
<child-comp ref="childComp"/>
</template>
Example 2
প্যারেন্ট কম্পোনেন্ট থেকে চাইল্ড কম্পোনেন্টে 'createMessage' পদ্ধতিতে কল করা কাজ করে না কারণ শুধুমাত্র 'মেসেজ' ডেটা অ্যাট্রিবিউট চাইল্ড কম্পোনেন্টের এক্সপোজ অপশনে তালিকাভুক্ত করা হয়েছে।
ChildComp.vue:
<template>
<div>
<h3>ChildComp.vue</h3>
<p>Message from parent component:</p>
<p id="pEl">{{ message }}</p>
</div>
</template>
<script>
export default {
expose: ['message'],
data() {
return {
message: ' '
}
},
methods: {
createMessage(msg) {
this.message += msg + ' '
}
}
}
</script>
<style scoped>
div {
border: solid black 1px;
padding: 10px;
max-width: 350px;
margin-top: 20px;
}
#pEl {
background-color: lightgreen;
font-family: 'Courier New', Courier, monospace;
}
</style>
App.vue:
<template>
<h2>Example expose Option</h2>
<p>Only the 'message' data property is listed in the 'expose' option, so the 'createMessage' method from the child component is not available, and will not work:</p>
<input type="text" v-model="inpText" placeholder="Write something">
<button v-on:click="useMet">Use exposed method</button>
<child-comp ref="childComp"/>
</template>
<script>
export default {
data() {
return {
inpText: ''
}
},
methods: {
useMet() {
this.$refs.childComp.createMessage(this.inpText);
}
},
mounted() {
this.$refs.childComp.message = 'Initial message!';
}
}
</script>
Vue এক্সপোজ টিউটোরিয়াল
এই টিউটোরিয়ালে ব্যাখ্যা যাচাই করতে পারে এমন অনুশীলন করুন।