blob: 6ac8a08dd75ea6046045275e089f4d3d2563c65c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import { useRouter } from 'next/router';
import { useEffect, useState } from 'react';
/**
* Use `document.querySelectorAll`.
*
* @param {string} query - A query.
* @returns {NodeListOf<HTMLElementTagNameMap[T]|undefined>} - The node list.
*/
const useQuerySelectorAll = <T extends keyof HTMLElementTagNameMap>(
query: string
): NodeListOf<HTMLElementTagNameMap[T]> | undefined => {
const [elements, setElements] =
useState<NodeListOf<HTMLElementTagNameMap[T]>>();
const { asPath } = useRouter();
useEffect(() => {
setElements(document.querySelectorAll(query));
}, [asPath, query]);
return elements;
};
export default useQuerySelectorAll;
|