Да, я использую функциональные компоненты с хуками. Но в данном случае задача чуть другая. Функция, которую я предоставил может использоваться как в функциональном компоненте, так и в статичном js коде (например для объявления статичных options какого-то селекта)
Если у вас проблемы с суперглобальными document и window
пишите чистый js в связке с useEffect
А начальные, стартовые или по умолчанию значения в useState
Если вы пытаетесь впихнуть jQuery в код, то и на суперглобальную $ есть вебхуки.
Но лучше не использовать, падает реактивность, да и кода больше