2019-04-04에 이어 React Hooks '로이 작업을 수행 할 수있는 것 같습니다 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 에서 게시 한 라이브러리를 확인 하십시오 . 또한 수백 또는 수천 개의 다른 고유 ID가 있지만 uniqueId
접두사가있는 lodash 는 작업을 완료하기에 충분합니다.
업데이트 2019-07-10
@Huong Hk에게 게으른 초기 상태 를 연결 하도록 알려 주셔서 감사합니다. 이의 합계 useState
는 초기 마운트에서만 실행 되는 함수를 전달할 수 있다는 것입니다.
// before
const [ id ] = useState(uniqueId('myprefix-'))
// after
const [ id ] = useState(() => uniqueId('myprefix-'))