@@ -396,28 +396,41 @@ export function Markdown({
396396} : MarkdownProps ) {
397397 const { setHeadings } = useMarkdownHeadings ( )
398398
399- React . useEffect ( ( ) => {
400- if ( headingsOverride ) {
401- setHeadings ( headingsOverride )
402- } else {
403- const { headings } = renderMarkdown ( htmlMarkup || rawContent || '' )
404- setHeadings ( headings )
399+ const fallbackRender = React . useMemo ( ( ) => {
400+ if ( ! rawContent ) {
401+ return null
405402 }
406- } , [ headingsOverride , htmlMarkup , rawContent , setHeadings ] )
403+
404+ return renderMarkdown ( rawContent )
405+ } , [ rawContent ] )
407406
408407 const markup = React . useMemo ( ( ) => {
409408 if ( htmlMarkup ) {
410409 return htmlMarkup
411410 }
412- if ( rawContent ) {
413- return renderMarkdown ( rawContent ) . markup
411+
412+ return fallbackRender ?. markup ?? ''
413+ } , [ fallbackRender ?. markup , htmlMarkup ] )
414+
415+ const headings = React . useMemo ( ( ) => {
416+ if ( headingsOverride ) {
417+ return headingsOverride
418+ }
419+
420+ return fallbackRender ?. headings ?? [ ]
421+ } , [ fallbackRender ?. headings , headingsOverride ] )
422+
423+ React . useEffect ( ( ) => {
424+ setHeadings ( headings )
425+ } , [ headings , setHeadings ] )
426+
427+ const parsed = React . useMemo ( ( ) => {
428+ if ( ! markup ) {
429+ return null
414430 }
415- return ''
416- } , [ htmlMarkup , rawContent ] )
417431
418- if ( ! markup ) {
419- return null
420- }
432+ return parse ( markup , options )
433+ } , [ markup ] )
421434
422- return React . useMemo ( ( ) => parse ( markup , options ) , [ markup ] )
435+ return parsed
423436}
0 commit comments