2019-04-04 itibarıyla bu, React Hooks ile başarılabilecek gibi görünüyor 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
Anladığım kadarıyla, güncelleme yapmanıza izin verecek dizi yıkımındaki ikinci dizi öğesini görmezden geliyorsunuz. id ve şimdi bileşenin ömrü boyunca tekrar güncellenmeyecek bir değeriniz var.
Değeri idolacaktır myprefix-<n>burada <n>dönen bir artımlı tamsayı değerdir uniqueId. Bu sizin için yeterince benzersiz değilse, kendi beğeninizi yapmayı düşünün
function gen4() {
return Math.random().toString(16).slice(-4)
}
function simpleUniqueId(prefix) {
return (prefix || '').concat([
gen4(),
gen4(),
gen4(),
gen4(),
gen4(),
gen4(),
gen4(),
gen4()
].join(''))
}
veya bununla birlikte yayınladığım kütüphaneye bakın: https://github.com/rpearce/simple-uniqueid . Orada yüzlerce veya binlerce başka benzersiz kimlik bilgisi de var, ancak uniqueIdön ekli lodash'lar işi bitirmek için yeterli olmalı.
Güncelleme 2019-07-10
Beni tembel başlangıç durumuna yönlendirdiği için @ Huong Hk'ye teşekkürler , bunun toplamı, useStateyalnızca ilk bağlantıda çalıştırılacak olan bir işlevi iletebilmenizdir .
// before
const [ id ] = useState(uniqueId('myprefix-'))
// after
const [ id ] = useState(() => uniqueId('myprefix-'))