2016-08-08 6 views
5

के लिए मान्य प्रतीकों क्या हैं इस तरह के प्रतिक्रिया कुंजी प्रोप के लिए वैध प्रतीक क्या हैं;एक प्रतिक्रिया 'कुंजी'

<div key="can i use spaces for example?"></div> 

मेरे मामले में मैं कुंजी

const links = [ 
    { 
     label: 'foo label', 
     href: 'https://example.com', 
    }, 
    { 
     label: 'bar label', 
     href: 'https://example.com', 
    } 
] 

links.map(
    link => (<a key={link.href} href={link.href}>{link.label}</a>) 
); 

रूप में एक URL का उपयोग करना चाहते यह वैध है? मैं सोच रहा था कि मैं पहले से ही href को पास करने के लिए कुछ हैश फ़ंक्शन का उपयोग कर सकता हूं, लेकिन यदि कोई वर्ण किसी महत्वपूर्ण मान में मान्य होने की गारंटी है तो यह एक व्यर्थ कदम है।

कारण मैं पूछ रहा हूं कि मुझे उस दस्तावेज़ में कोई उदाहरण नहीं मिल रहा है जो कुंजी के लिए गैर-अल्फा-न्यूमेरिक वर्ण का उपयोग करता है, और यह भी स्पष्ट रूप से कहता है कि, यदि आपके पास कोई आईडी नहीं है उस ऑब्जेक्ट के लिए कुंजी के रूप में उपयोग करें जिसे आप प्रतिपादित कर रहे हैं, आप hash some part of it to make a key कर सकते हैं। यद्यपि ऐसा इसलिए हो सकता है क्योंकि आपको बहुत लंबी चाबियों का उपयोग नहीं करना चाहिए, और इसके पहले सामग्री को अपने आकार को छोटा करने के लिए हैश करना चाहिए, ऐसा लगता है कि पूरे दस्तावेज स्पष्ट रूप से कहते हैं कि केवल अल्फा-न्यूमेरिक वर्णों को कुंजी के रूप में उपयोग किया जाना चाहिए। प्रतिक्रिया के प्रमुख के लिए

उत्तर

2

आवश्यकताओं के लिए सबसे अच्छा के लिए reconciliation

दस्तावेज में वर्णन किया गया है अभ्यास में, एक कुंजी खोजने वास्तव में कड़ी मेहनत नहीं है। अधिकांश समय, तत्व जिसे आप प्रदर्शित करने जा रहे हैं, में पहले से ही एक अद्वितीय आईडी है। जब यह मामला नहीं है, तो आप अपने मॉडल में एक नई आईडी प्रॉपर्टी जोड़ सकते हैं या कुछ सामग्री उत्पन्न करने के लिए सामग्री के कुछ हिस्सों को जोड़ सकते हैं। याद रखें कि कुंजी में केवल है जो अपने भाई बहनों के बीच अद्वितीय है, न कि वैश्विक स्तर पर अद्वितीय।

तो, कुंजी अद्वितीय (अपने भाई बहनों के बीच) और स्थिर होना चाहिए।

इसलिए आपका उदाहरण एक अच्छा फिट है। रिक्त स्थान भी ठीक होना चाहिए।

+0

हालांकि आपके द्वारा पोस्ट किया गया अंश स्पष्ट रूप से किसी कुंजी में उपयोग करने के लिए अमान्य तारों के बारे में कुछ भी नहीं कहता है, यह कहता है कि "आप कुंजी उत्पन्न करने के लिए सामग्री का कुछ हिस्सा हश कर सकते हैं"। हालांकि इसका मतलब यह नहीं है कि कुछ वर्ण अमान्य हैं, ऐसा लगता है कि इसका मतलब यह हो सकता है। और भले ही प्रतिक्रिया किसी भी पात्र के लिए क्रैश प्रतीत नहीं होती है (यूआरएल उदाहरण के लिए काम करता प्रतीत होता है), इसका मतलब यह नहीं है कि यह "समर्थित" है और भविष्य में होगा। – sigsve

+0

यह सुनिश्चित नहीं है कि मूल उदाहरण बदल गया है, लेकिन उस मामले में कुंजी * एक अच्छा फिट नहीं है, क्योंकि यूआरएल अपने भाई बहनों के बीच अद्वितीय नहीं है। इस मामले में लेबल का उपयोग करने के लिए बेहतर है। –

संबंधित मुद्दे