1
0
Fork 0
freesewing/sites/shared/hooks/use-dynamic-mdx.mjs

24 lines
706 B
JavaScript
Raw Normal View History

2023-07-17 20:41:46 -05:00
import { components } from 'shared/components/mdx/index.mjs'
import { Loading } from 'shared/components/spinner.mjs'
import { useState, useEffect } from 'react'
export const useDynamicMdx = (loader, site = 'org') => {
// State
const [frontmatter, setFrontmatter] = useState({ title: `freeSewing.${site}` })
const [MDX, setMDX] = useState(<Loading />)
/* Load MDX dynamically */
useEffect(() => {
const loadMDX = async () => {
loader().then((mod) => {
setFrontmatter(mod.frontmatter)
const Component = mod.default
setMDX(<Component components={components(site)} />)
})
}
if (loader) loadMDX()
}, [loader, site])
return { MDX, frontmatter }
}