आपको JSON
ऑब्जेक्ट का उपयोग करने की आवश्यकता नहीं है।
const child = {
props:["user"],
data(){
return {
localUser: Object.assign({}, this.user)
}
}
}
localUser
उपयोग (या जो भी आप इसे कॉल करना चाहते हैं) अपने बच्चे के अंदर।
संपादित
मैं इस सवाल का एक बेला एक और जवाब के लिए बनाई गई संशोधित किया था इसके बाद के संस्करण की अवधारणा और @ user3743266 पूछा
मैं पकड़ के लिए इस के साथ अपने आप आ रहा हूँ प्रदर्शित करने के लिए, और मैं मुझे यह बहुत उपयोगी लगता है। आपका उदाहरण अच्छी तरह से काम करता है। बच्चे में, आपने डेटा में तत्व बनाया है जो प्रोप की प्रतिलिपि लेता है, और बच्चे प्रतिलिपि के साथ काम करता है। दिलचस्प और उपयोगी, लेकिन ... यह मुझे स्पष्ट नहीं है जब स्थानीय प्रति अभिभावक को संशोधित करता है तो स्थानीय प्रति अपडेट हो जाती है। मैंने आपके पहेली को संशोधित किया, v-ifs को हटा दिया ताकि सबकुछ दिखाई दे, और संपादन घटक को डुप्लिकेट कर रहा हो। यदि आप एक घटक में नाम संशोधित करते हैं, तो दूसरा अनाथ है और इसमें कोई परिवर्तन नहीं होता है?
वर्तमान घटक इस तरह दिखता है:
Vue.component('edit-user', {
template: `
<div>
<input type="text" v-model="localUser.name">
<button @click="$emit('save', localUser)">Save</button>
<button @click="$emit('cancel')">Cancel</button>
</div>
`,
props: ['user'],
data() {
return {
localUser: Object.assign({}, this.user)
}
}
})
क्योंकि मैं उपयोग करने के लिए एक स्थानीय कॉपी उपयोगकर्ता की डिजाइन निर्णय लिया, @ user3743266 सही है, तो घटक अपने आप अपडेट नहीं किया गया है। संपत्तिuser
अपडेट किया गया है, लेकिन localUser
नहीं है। इस मामले में, यदि जब भी संपत्ति बदल जाती है तो आप स्वचालित रूप से स्थानीय डेटा अपडेट करना चाहते थे, आपको एक वॉचर की आवश्यकता होगी।
Vue.component('edit-user', {
template: `
<div>
<input type="text" v-model="localUser.name">
<button @click="$emit('save', localUser)">Save</button>
<button @click="$emit('cancel')">Cancel</button>
</div>
`,
props: ['user'],
data() {
return {
localUser: Object.assign({}, this.user)
}
},
watch:{
user(newUser){
this.localUser = Object.assign({}, newUser)
}
}
})
यहां अद्यतन fiddle है।
यह स्थानीय डेटा को अपडेट या उत्सर्जित करने पर आपको पूर्ण नियंत्रण की अनुमति देता है। उदाहरण के लिए, आप स्थानीय स्थिति को अपडेट करने से पहले एक शर्त जांचना चाहेंगे।
watch:{
user(newUser){
if (condition)
this.localUser = Object.assign({}, newUser)
}
}
जैसा कि मैंने कहीं और कहा, कई बार जब आप वस्तुओं गुण परिवर्तनशील होने का लाभ लेने के लिए चाहते हो सकता है कर रहे हैं, लेकिन वहां भी इस तरह बार जहां अधिक नियंत्रण चाहते हो सकता है कर रहे हैं।
@ user3743266 कुछ स्पष्टीकरण जोड़ा गया। – Bert
बहुत अच्छा है। यह बहुत दिलचस्प रहा है धन्यवाद। वू मेरी दादी चट्टानों। मुझे लगता है कि इवान आप वास्तव में 30 रॉकेट वैज्ञानिकों की एक टीम है। – bbsimonbb
क्या आप वाकई हैं? मैं यह धागा कहूंगा, और आपके उत्तर में बहुत मूल्य होगा। इस तरह के प्रश्न वू का उपयोग करने वाले हर किसी के लिए संभावित रूप से प्रासंगिक हैं। इसे छोड़ दो, और यह एक लंबा और आश्चर्यजनक जीवन हो सकता है। – bbsimonbb