html में data-reactid विशेषता क्या है?


93

जब मैं कुछ पृष्ठों के HTML के माध्यम से जा रहा था, मैंने देखा कि उनमें से कुछ इस विशेषता "डेटा-रिएक्टिड" का उपयोग करते हैं:

 <a data-reactid="......" ></a>

वह विशेषता क्या है और उसका कार्य क्या है?


30
data-reactidकस्टम विशेषता रिएक्ट जावास्क्रिप्ट पुस्तकालय द्वारा उपयोग किया जाता है । जिसे फेसबुक और इंस्टाग्राम के साथ उपयोग करने के लिए विकसित किया गया है।
amit

7
कृपया ध्यान दें कि सभी उत्तर बता रहे हैं कि कस्टम तिथि- विशेषताएँ क्या हैं और यह स्पष्ट नहीं कर रही हैं कि डेटा-प्रतिक्रिया क्या है। इसका उपयोग प्रतिक्रिया तत्व वर्ग उदाहरण के साथ डोम ऑब्जेक्ट को संदर्भित करने में सक्षम होने के लिए प्रतिक्रिया द्वारा किया जाता है।
adrianj98

2
@ adrianj98, आपने अपनी टिप्पणी को उत्तर के रूप में पोस्ट क्यों नहीं किया?
ऑक्टोपस

3
आश्चर्य है, अगर फेसबुक रिएक्ट का उपयोग करता है तो मुझे उनकी साइट में कोई डेटा-रिएक्टिड क्यों नहीं मिलता है?
पाब्लोअरोलेस

जवाबों:


131

data-reactidविशेषता है कि इतनी इस्तेमाल किया कस्टम विशेषता है प्रतिक्रिया विशिष्ट डोम के भीतर उसके घटकों की पहचान कर सकते हैं।

यह महत्वपूर्ण है क्योंकि रिएक्ट एप्लिकेशन को सर्वर के साथ-साथ क्लाइंट में भी प्रस्तुत किया जा सकता है । आंतरिक रूप से प्रतिक्रिया डोम नोड्स के संदर्भ का प्रतिनिधित्व करती है जो आपके आवेदन को बनाते हैं (सरलीकृत संस्करण नीचे है)।

{
  id: '.1oqi7occu80',
  node: DivRef,
  children: [
    {
      id: '.1oqi7occu80.0',
      node: SpanRef,
      children: [
        {
          id: '.1oqi7occu80.0.0',
          node: InputRef,
          children: []
        }
      ]
    }
  ]
}

सर्वर और क्लाइंट के बीच वास्तविक वस्तु संदर्भों को साझा करने का कोई तरीका नहीं है और पूरे घटक पेड़ का क्रमबद्ध संस्करण भेजना संभावित रूप से महंगा है। जब सर्वर पर एप्लिकेशन रेंडर किया जाता है और क्लाइंट पर रिएक्ट लोड किया जाता है, तो उसके पास एकमात्र डेटा ही data-reactidविशेषताएँ होती हैं।

<div data-reactid='.loqi70ccu80'>
  <span data-reactid='.loqi70ccu80.0'>
    <input data-reactid='.loqi70ccu80.0' />
  </span>
</div>

इसे ऊपर डेटा संरचना में वापस परिवर्तित करने में सक्षम होने की आवश्यकता है। जिस तरह से यह अद्वितीय data-reactidविशेषताओं के साथ है। इसे कंपोनेंट ट्री को फुलाया जाता है ।

आप यह भी देख सकते हैं कि यदि अभिकर्ता क्लाइंट-साइड में प्रस्तुत करता है, तो यह data-reactidविशेषता का उपयोग करता है , भले ही इसके संदर्भों को खोने की आवश्यकता न हो। कुछ ब्राउज़रों में, यह आपके एप्लिकेशन को DOM में सम्मिलित करता है, .innerHTMLफिर यह एक प्रदर्शन को बढ़ावा देने के रूप में सीधे कंपोनेंट ट्री को फुला देता है।

अन्य दिलचस्प अंतर यह है कि क्लाइंट-साइड रेंडर किए गए रिएक्ट आईडी में एक वृद्धिशील पूर्णांक प्रारूप (जैसे .0.1.4.3) होगा, जबकि सर्वर-रेंडर वाले एक यादृच्छिक स्ट्रिंग (जैसे .loqi70ccu80.1.4.3) के साथ उपसर्ग किए जाएंगे । ऐसा इसलिए है क्योंकि एप्लिकेशन को कई सर्वरों में प्रस्तुत किया जा सकता है और यह महत्वपूर्ण है कि कोई टकराव न हो। क्लाइंट-साइड पर, केवल एक रेंडरिंग प्रक्रिया है, जिसका अर्थ है कि यूनिक आईडी सुनिश्चित करने के लिए काउंटरों का उपयोग किया जा सकता है।

15 केdocument.createElement बजाय प्रतिक्रिया का उपयोग करता है , इसलिए क्लाइंट प्रदान किए गए मार्कअप में ये विशेषताएँ शामिल नहीं होंगी।


3
यह स्वीकृत उत्तर होना चाहिए क्योंकि यह केवल एक ही है जो प्रश्न का उत्तर देता है।
जॉन


2
रिएक्ट v15 + के लिए: सर्वर-रेंडर कंटेंट के लिए डेटा-रिएक्टिड अभी भी मौजूद है, हालांकि यह पहले की तुलना में बहुत छोटा है और बस एक ऑटो-इंक्रीमेंटिंग काउंटर है।
रेशनलडेव

1
@RationalDev आह, यह दिलचस्प है। यदि एप्लिकेशन को कई सर्वरों पर प्रदान किया गया है, तो यह टकराव की समस्या को कैसे गोल कर सकता है?
डैन प्रिंस

1
मैं उस अंतिम खंड की तलाश में था, जो कि जोड़ने के लिए धन्यवाद। मैं उलझन में था कि मेरे क्लाइंट मार्कअप ने इसे शामिल क्यों नहीं किया जैसा कि उसने पहले किया था, लेकिन मेरे ऐप के दूसरे हिस्से में यह था (इसे सर्वर पर प्रदान किया गया था)।
जैकोबलेनवुड


11

HTML5 में कस्टम डेटा विशेषता

मेरे जवाब में इयान की टिप्पणी को उद्धृत करना चाहेंगे:

यह उस तत्व पर सिर्फ एक विशेषता (एक मान्य) है जिसका उपयोग आप डेटा / जानकारी संग्रहीत करने के लिए कर सकते हैं।

यह कोड बाद में ईवेंट हैंडलर में इसे पुनः प्राप्त करता है, और इसका उपयोग लक्ष्य आउटपुट तत्व को खोजने के लिए करता है। यह div के वर्ग को प्रभावी ढंग से संग्रहीत करता है जहां इसका पाठ आउटपुट होना चाहिए।

reactidसिर्फ एक प्रत्यय है, आप यहाँ कोई भी नाम रख सकते हैं जैसे data-Ayman:।

यदि आप इस एसओ उत्तर और टिप्पणी में फ़िडल्स की जाँच करना चाहते हैं ।


8
ध्यान दें कि आप दिए गए लिंक के अनुसार विशेषता नाम में अपरकेस अक्षरों का उपयोग नहीं कर सकते हैं।
लेज़

1
हाँ, यह प्रतिबंध थोड़ा भ्रामक है। DOM में ही वास्तविक विशेषता नाम, अपरकेस अक्षर नहीं हो सकते हैं, लेकिन HTML टैग में लिखी गई विशेषता, क्योंकि सभी टैग और विशेषता नाम स्वचालित रूप से कम किए जाते हैं, क्योंकि वे वैसे भी पढ़े जाते हैं। इसलिए HTML में आप अपरकेस अक्षरों का उपयोग कर सकते हैं, लेकिन JS में यह सभी लोअरकेस को समाप्त कर देगा। w3.org/TR/2010/WD-html5-20101019/…
Peeja

3

डेटा विशेषताओं को आमतौर पर विभिन्न इंटरैक्शन के लिए उपयोग किया जाता है। आमतौर पर जावास्क्रिप्ट के माध्यम से। वे साइट व्यवहार के बारे में कुछ भी प्रभावित नहीं करते हैं और जो भी उद्देश्य की आवश्यकता के लिए डेटा पास करने के लिए एक सुविधाजनक विधि के रूप में खड़े होते हैं। यहाँ एक लेख है जो चीजों को स्पष्ट कर सकता है:

http://ejohn.org/blog/html-5-data-attributes/

आप data-किसी भी मानक विशेषता सुरक्षित स्ट्रिंग (कोई रिक्त स्थान या विशेष वर्णों के साथ अल्फ़ान्यूमेरिक) को प्रीफ़िक्स करके डेटा विशेषता बना सकते हैं । उदाहरण के लिए, data-idया इस मामले मेंdata-reactid


3

यह HTML डेटा विशेषता है। इसे और अधिक विवरण के लिए देखें: http://html5doctor.com/html5-custom-data-attributes/

मूल रूप से यह अभी भी HTML को वैध बनाते हुए आपके कस्टम डेटा का एक कंटेनर है। यह data-प्लस कुछ विशिष्ट पहचानकर्ता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.