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-'))