Vue पैटर्न props
नीचे और events
ऊपर है। यह सरल लगता है, लेकिन कस्टम घटक लिखते समय भूलना आसान है।
Vue 2.2.0 के रूप में आप वी-मॉडल ( कम्प्यूटेड गुणों के साथ ) का उपयोग कर सकते हैं । मैंने पाया है कि यह संयोजन घटकों के बीच एक सरल, स्वच्छ और सुसंगत इंटरफ़ेस बनाता है:
props
आपके घटक में कोई भी प्रतिक्रियाशील रहता है (अर्थात, इसका क्लोन नहीं है और न ही इसे watch
स्थानीय प्रतिलिपि को अपडेट करने के लिए फ़ंक्शन की आवश्यकता होती है जब परिवर्तन का पता लगाया जाता है)।
- परिवर्तन स्वचालित रूप से जनक के लिए उत्सर्जित होते हैं।
- घटकों के कई स्तरों के साथ इस्तेमाल किया जा सकता है।
एक गणना की गई संपत्ति सेटर और गेट्टर को अलग-अलग परिभाषित करने की अनुमति देती है। यह Task
घटक को निम्नानुसार फिर से लिखने की अनुमति देता है:
Vue.component('Task', {
template: '#task-template',
props: ['list'],
model: {
prop: 'list',
event: 'listchange'
},
computed: {
listLocal: {
get: function() {
return this.list
},
set: function(value) {
this.$emit('listchange', value)
}
}
}
})
मॉडल संपत्ति परिभाषित करता है जो prop
साथ जुड़ा हुआ है v-model
जो घटना, और परिवर्तन पर उत्सर्जित कर दिया जाएगा। आप इस घटक को माता-पिता से इस प्रकार कह सकते हैं:
<Task v-model="parentList"></Task>
listLocal
गणना की गई संपत्ति घटक के भीतर एक साधारण गेट्टर और सेटर इंटरफेस प्रदान करती है (इसे निजी चर होने की तरह सोचें)। भीतर #task-template
आप रेंडर कर सकते हैं listLocal
और यह प्रतिक्रियाशील रहेगा (यानी, यदि parentList
परिवर्तन यह Task
घटक को अपडेट करेगा )। आप listLocal
सेटर को कॉल करके भी म्यूट कर सकते हैं (उदाहरण के लिए this.listLocal = newList
) , और यह माता-पिता के लिए परिवर्तन का उत्सर्जन करेगा।
इस पैटर्न के बारे में बहुत अच्छी बात यह है कि आप (का उपयोग कर ) के listLocal
एक बच्चे के घटक को पास कर सकते हैं , और बच्चे के घटक से परिवर्तन शीर्ष स्तर के घटक को प्रचारित करेंगे।Task
v-model
उदाहरण के लिए, मान लें कि हमारे पास EditTask
कार्य डेटा में कुछ प्रकार के संशोधन करने के लिए एक अलग घटक है। उसी v-model
और गणना किए गए गुण पैटर्न का उपयोग करके हम listLocal
घटक (उपयोग v-model
) को पास कर सकते हैं :
<script type="text/x-template" id="task-template">
<div>
<EditTask v-model="listLocal"></EditTask>
</div>
</script>
यदि EditTask
एक परिवर्तन का उत्सर्जन करता है तो यह उचित रूप से कॉल set()
करेगा listLocal
और इस तरह घटना को शीर्ष स्तर पर प्रचारित करेगा। इसी तरह, EditTask
घटक अन्य बाल घटकों (जैसे फार्म तत्व) का उपयोग करके भी कॉल कर सकता है v-model
।