लेबल तत्व की 'विशेषता' के लिए प्रतिक्रिया को अनदेखा करता है


250

रिएक्ट (फेसबुक के ढांचे) में, मुझे मानक forविशेषता का उपयोग करके एक पाठ इनपुट के लिए बाध्य एक लेबल तत्व प्रदान करना होगा ।

निम्न JSX का उपयोग किया जाता है:

<label for="test">Test</label>
<input type="text" id="test" />

हालाँकि, यह HTML आवश्यक (और मानक) forविशेषता को गायब करता है :

<label>Test</label>
<input type="text" id="test">

मैं क्या गलत कर रहा हूं?

जवाबों:


484

forविशेषता कहा जाता है htmlForडोम संपत्ति एपीआई के साथ स्थिरता के लिए। यदि आप रिएक्ट के विकास बिल्ड का उपयोग कर रहे हैं, तो आपको इस बारे में अपने कंसोल में एक चेतावनी देखनी चाहिए।


4
धन्यवाद बेन। क्या आप मेरे लिए "DOM API के साथ स्थिरता के लिए" समझा सकते हैं?
goofballLogic

17
यदि आपके पास कोई labelतत्व है (जैसे कि , आदि) द्वारा लौटाया गया है document.createElement, document.getElementByIdतो आप इसकी forसंपत्ति तक पहुँच प्राप्त करेंगे label.htmlFor
सोफी अल्परट

3
@Meglio HTML में आपको कार्य करने के लिए विशेषता के लिए ID की आवश्यकता होती है। अपने घटक को पुन: प्रयोज्य बनाने के लिए आप अपने घटक में एक नाम संपत्ति जोड़ सकते हैं जिसे आप आईडी के रूप में और वास्तविक इनपुट क्षेत्र पर नाम विशेषता के रूप में सेट करते हैं।
12

2
कोई बात नहीं, मुझे यहाँ जवाब मिला । वे एक आईडी जनरेटर का उपयोग करने के लिए कहते हैं।
टोबिया

2
@BenAlpert उस पर प्रकाश डालने के लिए धन्यवाद। मैं jQuery और सामान की DOM API becuase को कभी नहीं देखता था (कृपया मुझे माफ करें)। लेकिन अगर कोई और इस बारे में अधिक जानने में दिलचस्पी रखता है, तो डेवलपर . mozilla.org/en-US/docs/Web/API/HTMLLabelElement की जाँच करें ।
alvincrespo


13

प्रतिक्रिया के लिए आपको HTML विशेषताओं को परिभाषित करने के लिए प्रति-परिभाषित कीवर्ड का उपयोग करना चाहिए।

class -> className

प्रयोग किया जाता है और

for -> htmlFor

का उपयोग किया जाता है, जैसा कि प्रतिक्रिया संवेदनशील होती है सुनिश्चित करें कि आपको आवश्यक के रूप में छोटे और पूंजी का पालन करना चाहिए।


3

दोनों forऔर classजावास्क्रिप्ट में शब्द आरक्षित हैं यही कारण है कि जब यह एचटीएमएल JSX में विशेषताओं की बात आती है तुम, के लिए और उपयोग कुछ चाहिए प्रतिक्रिया टीम का उपयोग करने का फैसला किया htmlForऔर classNameक्रमश:


1
इसका उससे कोई लेना-देना नहीं है। JSX परिवर्तन बस इसे 'वर्ग' में बदल सकता है जो संपत्ति के नाम के लिए भी मान्य है। वास्तव में, Preact में, आप क्लास और क्लासनाम दोनों का उपयोग कर सकते हैं।
माल्टे आर

3
जबकि React इसे JSX में बदल सकता है, लेकिन ऐसा नहीं है। उनके डॉक्स (25-मार्च -२०२० के अनुसार) "चूंकि forजावास्क्रिप्ट में एक आरक्षित शब्द है, htmlForइसके बजाय प्रतिक्रिया तत्व उपयोग करते हैं।": Reajs.org/docs/dom-elements.html#htmlfor
nirvdrum

@MalteR आप इसे IE8, IE7 और IE6
Trident D'Gao


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