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 id
olacaktı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ı, useState
yalnı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-'))