An open API service indexing awesome lists of open source software.

https://github.com/accessible-ui/use-id

🅰 A React hook for creating unique IDs to facilitate WAI-ARIA and server rendering
https://github.com/accessible-ui/use-id

Last synced: 4 months ago
JSON representation

🅰 A React hook for creating unique IDs to facilitate WAI-ARIA and server rendering

Awesome Lists containing this project

README

        





useId()




Bundlephobia


Types


Code coverage


Build status


NPM Version


MIT License

npm i @accessible/use-id


Creates unique deterministic IDs to facilitate WAI-ARIA and server rendering. Forked from [@reach/auto-id](https://github.com/reach/reach-ui/tree/master/packages/auto-id).

## Quick Start

```jsx harmony
import useId from '@accessible/use-id'

const Component = () => {
const id = useId()
return


//

}
```

## API

### useId(fallbackId?: string | null | 0 | false, prefix?: string): string | undefined

A hook that returns a unique, but deterministic ID once per component

### Arguments

| Argument | Type | Default | Required? | Description |
| ---------- | -------------------------------------------------------- | ----------- | --------- | ----------------------------------------------------------------------------------------- |
| fallbackId | string | null | 0 | false | `undefined` | No | Allows you to provide your own id as a fallback |
| prefix | `string` | `🅰` | No | Allows you to provide a prefix for the `id` to prevent collisions with other auto id libs |

## Credit

This library is a fork of [@reach/auto-id](https://github.com/reach/reach-ui/tree/master/packages/auto-id)

## Why fork?

Reach UI doesn't use real semantic versioning (each of their packages updates versions at the same time regardless of
changes to individual packages... nonsense) so it's possible (and annoyingly so) that you could easily wind up with duplicate
version of the `auto-id` package in your bundle. Lastly, the Reach library throws super annoying warnings
in SSR because it uses `useLayoutEffect`. This library uses [@react-hook/passive-layout-effect](https://github.com/jaredLunde/react-hook/tree/master/packages/passive-layout-effect#readme)
to avoid that.

## LICENSE

MIT