"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
उपयोगकर्ताओं को तुरंत संलग्न करें: अपने रिएक्ट स्पा में एक इंटरैक्टिव डेमो एम्बेड करें
2025-02-06 पर पोस्ट किया गया
ब्राउज़ करें:214
]
क्या आप ऐप के उद्देश्य को समझने के लिए buzzwords के माध्यम से स्क्रॉल करने का आनंद लेते हैं? शायद नहीं। और मुझे अपने नवीनतम जुनून प्रोजेक्ट, वाना के लिए उस सभी को लिखने की परवाह नहीं थी। इसलिए मैंने एक और दिलचस्प समाधान का पीछा किया: उपयोगकर्ताओं को पता लगाने के लिए अपने स्वयं के लैंडिंग पृष्ठ के अंदर अपने ऐप को नेस्ट करें!
]
कार्यान्वयन
]
]
वापस करना (
)
}
हालांकि, आप कुछ समस्याओं में भाग लेंगे:
]
]
यह उपयोगकर्ताओं के लिए स्पष्ट नहीं हो सकता है कि वे क्या देख रहे हैं
आइए उन को हल करें। वाना राउटर v6 और अपोलो ग्राफक्ल का उपयोग करता है, लेकिन अवधारणाएं प्रौद्योगिकी की परवाह किए बिना लागू होती हैं।
मार्गदर्शन
] यह बाकी ऐप कोड के लिए न्यूनतम इनवेसिव है, और यहां तक कि हमें मैनुअल परीक्षण के लिए डेमो का उपयोग करने देता है - बहुत आसान है जब जल्दी से पुनरावृति।
मैंने मॉक-एपोलो-क्लाइंट का उपयोग किया; REST या TRPC के लिए, आप Nock जैसी किसी चीज़ का उपयोग कर सकते हैं। वे स्वचालित परीक्षण के लिए हैं, लेकिन वास्तव में हमें यहां क्या चाहिए।
]
]
आयात {createmockclient, createmocksubscription} 'मॉक-एपोलो-क्लाइंट' से
आयात {usememo, usestate} 'रिएक्ट' से
// GraphQL दस्तावेज़ जो हमारे क्लाइंट को वास्तविक सर्वर पर भेजता है
आयात get_friends से '../../gql/getfridments.gql'
आयात add_friend से '../../gql/addfriend.gql'
// सरलीकृत उदाहरण
एक्सपोर्ट कांस्ट यूज्डेमोक्लिएंट = () => {
const [दोस्तों, सेटफ्रेंड्स] = usestate [{
__typeName: 'उपयोगकर्ता',
आईडी: 1,
नाम: 'निक',
}]
// कैश को ग्राहकों के पार जारी रखना चाहिए
const cache = usememo () => {
// वही कैश कॉन्फ़िगरेशन होना चाहिए जो आप अपने वास्तविक अपोलो क्लाइंट को प्रदान करते हैं
नया inmemorycache लौटाएं ()
}, [])
// जब भी डेटा बदलता है, हमें मॉक क्लाइंट को फिर से बनाने की आवश्यकता होती है
// क्योंकि यह अनुरोध हैंडलर्स को रीसेट करने का समर्थन नहीं करता है।
const mockclient = usememo () => {
const क्लाइंट = createMockClient ({कैश})
client.setRequestHandler (get_friends, () => proming.resolve ({{
डेटा: {
दोस्तों: दोस्तों
}
}))
client.setrequesthandler (add_friend, ({उपयोगकर्ता}) => {
सेटफ्रेंड्स ((prev) => prev.concat ([उपयोगकर्ता]))
वापसी वादा। resolve ({
डेटा: {
जोड़ें: उपयोगकर्ता
}
})
})
वापसी ग्राहक
}, [दोस्त])
मॉकक्लिएंट लौटें
}
यह काम करता है! अब हम उपयोगकर्ता को यह कैसे स्पष्ट करते हैं कि वे एक इंटरैक्टिव डेमो देख रहे हैं?
] मैंने डिवाइस का उपयोग किया। CSS क्योंकि यह उन उपकरणों की पेशकश करता है जिन्हें मैंने सोचा था कि सबसे अच्छा लग रहा था (यानी डेमो स्पेस को अधिकतम करने के लिए न्यूनतम बेजल)। लेकिन सादगी के लिए, यहां हम एक लाइब्रेरी का उपयोग करेंगे जो रिएक्ट आउट-ऑफ-द-बॉक्स का समर्थन करता है: रिएक्ट-डिवाइस-फ़्रेमसेट।
] वाना में मुझे इस ज़ूम के लिए उल्टा और खाता होना पड़ा, जब इनविटे ग्राफ को आकर्षित करने के लिए VisJS-HTML-nodes के साथ का उपयोग किया, लेकिन अधिकांश भाग के लिए यह "बस काम करता है"।
अंत में, यह एक एनीमेशन करने में मदद करता है ताकि यह स्पष्ट रूप से एक स्थिर छवि नहीं है। उदाहरण के लिए, गतिविधि इनपुट फ़ील्ड में लगातार भूत-प्रकार के सुझाव देना चाहते हैं।
विज्ञप्ति वक्तव्य
इस लेख को फिर से पुनर्मुद्रित किया गया है: https://dev.to/nick_van_dyke/engage-users-instantly-embed-an-interactive-demo-in-youct-spa-2cf1?1 यदि कोई उल्लंघन है, @163.com हटाएं
] सीएसएस में लगातार छवि ऊंचाई बनाए रखने के लिए ब्राउज़रों में मूल रूप से काम करता है। हालांकि, IE और एज में, एक अजीबोगरीब मुद्दा उठता है। ब्राउज़र को ...
] हालाँकि, वास्तविक समय में स्टडआउट को पुनः प्राप्त करने का प्रयास करते समय चुनौतियां उत्पन्न होती हैं। इसे दूर करने के लिए, हमें स्क्रिप्ट के निष्पाद...
दृष्टिकोण जाने में मान्य नहीं है, और मापदंडों को कास्ट करने का प्रयास करने के लिए स्ट्रिंग्स के परिणामस्वरूप बेमेल त्रुटियां होती हैं। यह आपको रनटाइम...
] PHP में, एक असामान्य मुद्दा तब उत्पन्न होता है जब कुंजियों में 07 या 08 जैसे संख्यात्मक मान होते हैं। Print_r ($ महीने) चलाना अप्रत्याशित परिणाम देत...
] यह लेख इस मुद्दे को संबोधित करता है और एक समाधान प्रदान करता है। इसे हल करने के लिए, यह समझना महत्वपूर्ण है कि MySQL के लिए आधिकारिक विजुअल स्टूडियो...
] लोग, विवरण, और टैक्सोनॉमी टेबल? पी।*, उम्र के रूप में d.content का चयन करें पी के रूप में लोगों से D.Person_id = P.ID पर D के रूप में विवरण में शामि...
] eval (), एक शक्तिशाली पायथन फ़ंक्शन, अक्सर एक संभावित समाधान के रूप में उत्पन्न होता है, लेकिन चिंताएं इसके संभावित जोखिमों को घेरती हैं। यह लेख eva...
] यहाँ, हम एक सामान्य चुनौती से संपर्क करते हैं: पंक्ति-आधारित से स्तंभ-आधारित डेटा को बदलना समूह द्वारा समूह का उपयोग करके। आइए निम्न क्वेरी पर विचार...
] यह त्रुटि आम तौर पर तब होती है जब या तो Linq नेमस्पेस को छोड़ दिया जाता है या queried प्रकार में ienumerable कार्यान्वयन का अभाव होता है। इस विशिष्...
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected]
हम इसे आपके लिए यथाशीघ्र संभालेंगे।