React-markdown: Headers

Created on 30 Aug 2017  路  4Comments  路  Source: remarkjs/react-markdown

Hey,

I want to swap out the header component for my own, but I see all heading are grouped under:
Heading - (h1, h2, etc.)

Is there a way to only swap out specific headings like only h1? because it overrides the other heading elements.

Most helpful comment

Default renderers are exposed on .renderers, so you should be able to do (untested):

const Markdown = require('react-markdown');

function HeadingRenderer(props) {
  if (props.level === 1) {
    return <h1>{props.children}</h1>
  }

  const Heading = Markdown.renderers.Heading
  return <Heading {...props} />
}

<Markdown
  source="# Some heading!\n\nAnd a paragraph"
  renderers={{Heading: HeadingRenderer}}
/>

All 4 comments

Default renderers are exposed on .renderers, so you should be able to do (untested):

const Markdown = require('react-markdown');

function HeadingRenderer(props) {
  if (props.level === 1) {
    return <h1>{props.children}</h1>
  }

  const Heading = Markdown.renderers.Heading
  return <Heading {...props} />
}

<Markdown
  source="# Some heading!\n\nAnd a paragraph"
  renderers={{Heading: HeadingRenderer}}
/>

Got it working with const Heading = Markdown.renderers.heading instead of const Heading = Markdown.renderers.Heading (lower case H).

I recently got it working with:
renderers={{ heading: HeadingRenderer }} lower case H in heading and also with Markdown.renderers.heading

Basically all thing are now in lower case

Here's an adjustment to @rexxars' version that covers all header levels dynamically:

<ReactMarkdown
  source={source}
  renderers={{
    heading: ({ children, level }) => {
      return (
        <Typography variant={`h${level}` as any}>
          {children}
        </Typography>
      )
    },
    paragraph: Typography
  }}
/>

(The as any part is for Typescript only)

Was this page helpful?
0 / 5 - 0 ratings

Related issues

LinusU picture LinusU  路  3Comments

zhenyulin picture zhenyulin  路  3Comments

hiteshpatwari picture hiteshpatwari  路  3Comments

joelin109 picture joelin109  路  3Comments

wqh17101 picture wqh17101  路  3Comments