2019-04-04 तक के बाद, यह रिएक्ट हुक के साथ पूरा किया जा सकता है useState
: '
import React, { useState } from 'react'
import uniqueId from 'lodash/utility/uniqueId'
const Field = props => {
const [ id ] = useState(uniqueId('myprefix-'))
return (
<div>
<label htmlFor={id}>{props.label}</label>
<input id={id} type="text"/>
</div>
)
}
export default Field
जैसा कि मैं इसे समझता हूं, आप सरणी विनाश में दूसरे सरणी आइटम को अनदेखा करते हैं जो आपको अपडेट करने की अनुमति देगा id
, और अब आपको एक मूल्य मिला है जो घटक के जीवन के लिए फिर से अपडेट नहीं किया जाएगा।
का मान वह id
होगा myprefix-<n>
जहां <n>
से एक वृद्धिशील पूर्णांक मान लौटाया जाता है uniqueId
। यदि यह आपके लिए पर्याप्त नहीं है, तो अपने जैसा बनाने पर विचार करें
function gen4() {
return Math.random().toString(16).slice(-4)
}
function simpleUniqueId(prefix) {
return (prefix || '').concat([
gen4(),
gen4(),
gen4(),
gen4(),
gen4(),
gen4(),
gen4(),
gen4()
].join(''))
}
या मेरे द्वारा यहां प्रकाशित लाइब्रेरी को देखें : https://github.com/rpearce/simple-uniqueid । वहाँ भी सैकड़ों या हजारों अन्य अद्वितीय आईडी चीजें हैं, लेकिन uniqueId
एक उपसर्ग के साथ लॉश को काम पूरा करने के लिए पर्याप्त होना चाहिए।
अपडेट 2019-07-10
आलसी प्रारंभिक अवस्था को इंगित करने के लिए @ ह्वॉन्ग एचके को धन्यवाद , जिसका योग यह है कि आप एक फ़ंक्शन पास कर सकते हैं जो useState
केवल शुरुआती माउंट पर चलाया जाएगा।
// before
const [ id ] = useState(uniqueId('myprefix-'))
// after
const [ id ] = useState(() => uniqueId('myprefix-'))