Одним из решений было бы использовать useEffect
для создания вашего идентификатора при первом рендеринге и сохранить его в состоянии:
const Dialog = () => {
const [id, setId] = useState(null);
useEffect(() => {
setId(uuid())
}, [])
return <div>Hello Dialog</div>
}
Предоставление пустого массива в качестве второго параметра useEffect
делает он не может срабатывать более одного раза.
Но еще одно чрезвычайно простое решение может заключаться в том, чтобы просто ... создать его вне вашего компонента:
const id = uuid();
const Dialog = () => {
return <div>Hello Dialog</div>
}