@@ -4,10 +4,8 @@ import { MDXProvider } from '@mdx-js/react'
4
4
import { Helmet } from 'react-helmet'
5
5
import CodeBlock from './codeBlock'
6
6
import Link from './Link'
7
- import Loading from '../component/Loading'
8
7
import styles from './style/index.less'
9
8
10
- // const { useState, useLayoutEffect, useRef } = React
11
9
const { useState, useEffect, useRef } = React
12
10
13
11
const components = {
@@ -19,31 +17,31 @@ function Markdown(markdownProps) {
19
17
const { props } = markdownProps
20
18
const { relative, name } = props
21
19
22
- const getInitMarkdownCP = ( ) => {
20
+ const getRmFirstSlashMarkdownName = ( ) => {
23
21
const relativeMd = relative
24
22
if ( ! relativeMd ) return null
23
+ return relative . slice ( 1 , relative . length - 3 )
24
+ }
25
25
26
- const rmFirstSlash = relative . slice ( 1 , relative . length - 3 )
27
- return ( ) => require ( `__project_root__/${ rmFirstSlash } .md` ) . default
26
+ const getInitMarkdownCP = ( ) => {
27
+ const markdownName = getRmFirstSlashMarkdownName ( )
28
+ if ( ! markdownName ) return
29
+ return ( ) => require ( `__project_root__/${ markdownName } .md` ) . default
28
30
}
29
- getInitMarkdownCP ( )
30
31
31
32
const [ MarkdownCP , setMarkdownCP ] = useState ( getInitMarkdownCP ( ) )
32
33
const markdownWrapperRef = useRef ( null )
33
34
34
35
const renderMarkdown = ( ) => {
35
- const relativeMd = relative
36
- if ( ! relativeMd ) return null
37
-
38
- const rmFirstSlash = relative . slice ( 1 , relative . length - 3 )
36
+ const markdownName = getRmFirstSlashMarkdownName ( )
37
+ if ( ! markdownName ) return
39
38
// it must be writen with / & .md in dynamic import
40
- import ( `__project_root__/${ rmFirstSlash } .md` ) . then ( ( data ) => {
39
+ import ( `__project_root__/${ markdownName } .md` ) . then ( ( data ) => {
41
40
// data.default is a function, so we should write () => data.default in setState here.
42
41
setMarkdownCP ( ( ) => ( data . default || data ) )
43
42
} )
44
43
}
45
44
46
- // useLayoutEffect(() => {
47
45
useEffect ( ( ) => {
48
46
renderMarkdown ( )
49
47
} , [ ] )
@@ -60,17 +58,15 @@ function Markdown(markdownProps) {
60
58
</ Helmet >
61
59
{
62
60
MarkdownCP
63
- ? < div className = { cx ( 'markdown' , styles . markdown , styles . markdownwrapper ) } ref = { markdownWrapperRef } >
64
- {
65
- // MarkdownCP
66
- // ?
67
- < MDXProvider
68
- components = { components }
69
- >
70
- < MarkdownCP />
71
- </ MDXProvider >
72
- // : <Loading />
73
- }
61
+ ? < div
62
+ className = { cx ( 'markdown' , styles . markdown , styles . markdownwrapper ) }
63
+ ref = { markdownWrapperRef }
64
+ >
65
+ < MDXProvider
66
+ components = { components }
67
+ >
68
+ < MarkdownCP />
69
+ </ MDXProvider >
74
70
</ div >
75
71
: null
76
72
}
0 commit comments