You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
503 B
23 lines
503 B
import React from 'react';
|
|
import { useMemo } from 'use-memo-one';
|
|
import type { ContextId } from '../../types';
|
|
|
|
let count = 0;
|
|
|
|
export function resetDeprecatedUniqueContextId() {
|
|
count = 0;
|
|
}
|
|
|
|
function useDeprecatedUniqueContextId(): ContextId {
|
|
return useMemo(() => `${count++}`, []);
|
|
}
|
|
|
|
function useUniqueContextId(): ContextId {
|
|
return React.useId();
|
|
}
|
|
|
|
// The useId hook is only available in React 18+
|
|
export default 'useId' in React
|
|
? useUniqueContextId
|
|
: useDeprecatedUniqueContextId;
|