Vue.js
जीवनचक्र के हुक
खोज…
Vue 1.x के लिए हुक
आवृत्ति को प्रारंभिक रूप से कॉल करने के बाद और किसी भी प्रारंभिक डेटा अवलोकन से पहले कॉल किया जाता है।init
उदाहरण बनने के बाद समकालिक रूप से कॉल किया जाता है। यहcreated$elसेटअप से पहले होता है, लेकिनdata observation,computed properties,watch/event callbacksऔरmethodsसेटअप किया गया है।
Vue उदाहरण के संकलन से तुरंत पहले।beforeCompile
संकलन पूरा होने के तुरंत बाद। सभीcompileddirectivesजुड़े हुए हैं लेकिन अभी भी$elसे पहले उपलब्ध हैं।
संकलन औरready$elपूरा होने के बाद और उदाहरण पहली बार DOM में इंजेक्ट किया गया है।
तब होता है जबattached$elएकdirectiveया उदाहरण द्वारा DOM से जुड़ा होता है$appendTo()।
DOM या इंस्टेंस विधि सेdetached$elको हटाए / अलग किए जाने पर कॉल किया जाता है।
Vue उदाहरण नष्ट होने से तुरंत पहले, लेकिन अभी भी पूरी तरह से कार्यात्मक है।beforeDestroy
एक इंस्टेंस नष्ट होने के बाद कॉल किया जाता है। सभीdestroyedbindingsऔरdirectivesपहले से ही अनबाउंड हैं और बच्चे के इंस्टेंस को भी नष्ट कर दिया गया है।
एक उदाहरण में उपयोग करना
चूंकि Vue.js में सभी जीवनचक्र हुक केवल functions , आप उनमें से किसी को भी सीधे उदाहरण घोषणा में रख सकते हैं।
//JS
new Vue({
el: '#example',
data: {
...
},
methods: {
...
},
//LIFECYCLE HOOK HANDLING
created: function() {
...
},
ready: function() {
...
}
});
सामान्य नुकसान: `तैयार ()` हुक से डोम तक पहुंचना
ready() हुक के लिए एक सामान्य usecase डोम का उपयोग करना है, उदाहरण के लिए जावास्क्रिप्ट प्लगइन आरंभ करना, एक तत्व के आयाम प्राप्त करना आदि।
समस्या
वीयू के अतुल्यकालिक डोम अपडेट तंत्र के कारण, यह गारंटी नहीं है कि ready() हुक कहा जाने पर डोम पूरी तरह से अपडेट हो गया है। यह आमतौर पर एक त्रुटि के कारण होता है क्योंकि तत्व अपरिभाषित है।
समाधान
इस स्थिति के लिए $nextTick() इंस्टेंस विधि मदद कर सकती है। यह विधि प्रदान की गई कॉलबैक फ़ंक्शन के निष्पादन को अगले टिक के बाद तक रोक देती है, जिसका अर्थ है कि यह निकाल दिया जाता है जब सभी डोम अपडेट समाप्त होने की गारंटी होती है।
उदाहरण:
module.exports {
ready: function () {
$('.cool-input').initiateCoolPlugin() //fails, because element is not in DOM yet.
this.$nextTick(function() {
$('.cool-input').initiateCoolPlugin() // this will work because it will be executed after the DOM update.
})
}
}
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow