@@ -2,12 +2,13 @@ import * as React from 'react';
22import { useRef , useEffect } from 'react' ;
33import classNames from 'classnames' ;
44import KeyCode from 'rc-util/lib/KeyCode' ;
5+ import useId from 'rc-util/lib/hooks/useId' ;
56import contains from 'rc-util/lib/Dom/contains' ;
67import pickAttrs from 'rc-util/lib/pickAttrs' ;
78import type ScollLocker from 'rc-util/lib/Dom/scrollLocker' ;
89import type { IDialogPropTypes } from '../IDialogPropTypes' ;
910import Mask from './Mask' ;
10- import { getMotionName , getUUID } from '../util' ;
11+ import { getMotionName } from '../util' ;
1112import type { ContentRef } from './Content' ;
1213import Content from './Content' ;
1314
@@ -57,10 +58,7 @@ export default function Dialog(props: IDialogChildProps) {
5758 const [ animatedVisible , setAnimatedVisible ] = React . useState ( visible ) ;
5859
5960 // ========================== Init ==========================
60- const ariaIdRef = useRef < string > ( ) ;
61- if ( ! ariaIdRef . current ) {
62- ariaIdRef . current = `rcDialogTitle${ getUUID ( ) } ` ;
63- }
61+ const ariaId = useId ( ) ;
6462
6563 // ========================= Events =========================
6664 function onDialogVisibleChanged ( newVisible : boolean ) {
@@ -185,7 +183,7 @@ export default function Dialog(props: IDialogChildProps) {
185183 ref = { wrapperRef }
186184 onClick = { onWrapperClick }
187185 role = "dialog"
188- aria-labelledby = { title ? ariaIdRef . current : null }
186+ aria-labelledby = { title ? ariaId : null }
189187 style = { { zIndex, ...wrapStyle , display : ! animatedVisible ? 'none' : null } }
190188 { ...wrapProps }
191189 >
@@ -195,7 +193,7 @@ export default function Dialog(props: IDialogChildProps) {
195193 onMouseUp = { onContentMouseUp }
196194 ref = { contentRef }
197195 closable = { closable }
198- ariaId = { ariaIdRef . current }
196+ ariaId = { ariaId }
199197 prefixCls = { prefixCls }
200198 visible = { visible }
201199 onClose = { onInternalClose }
0 commit comments