Html2react
A utility for turning raw HTML into React elements.
Install / Use
/learn @Deschtex/Html2reactREADME
HTML2React
A utility for turning raw HTML into React elements.
Installation
npm install --save html2react
Usage
Basic HTML conversion
If you want to take raw HTML, SVG or any arbitrary XML and turn it into something that you can use in a React application, without using dangerouslySetInnerHTML, then you can simply pass it to html2react:
import React from 'react'
import { render } from 'react-dom'
import HTML2React from 'html2react'
const html = `
<h1>Foo</h1>
<p><a href="#" style="text-decoration: none;">Bar</a></p>
<p>Baz</p>
`
render(
<div>
{HTML2React(html)}
</div>,
document.getElementById('root')
)
Note: All attributes but event handlers will be transferred to the React elements.
HTML conversion with element overrides
A powerful feature of html2react is the ability to target elements in the provided HTML and override them with React components, using nothing but CSS selectors for the mapping. Super simple!
The following example maps any <a> tag in the HTML to the local Link component:
import React from 'react'
import { render } from 'react-dom'
import HTML2React from 'html2react'
function Link (props) {
return <a {...props} style={{ textDecoration: 'none' }} />
}
const html = `
<h1>Foo</h1>
<p><a href="#">Bar</a></p>
<p>Baz</p>
`
const content = HTML2React(html, {
a: Link
})
render(
<div>
{content}
</div>,
document.getElementById('root')
)
The following example maps any <a> tag with an external class to the local ExternalLink component. It also demonstrates a slightly more complex selector that maps only the third <p> tag to a <p> tag that wraps the local Link component:
import React from 'react'
import { render } from 'react-dom'
import HTML2React from 'html2react'
function Link (props) {
return <a {...props} style={{ textDecoration: 'none' }} />
}
function ExternalLink (props) {
return <Link {...props} target='_blank' />
}
const html = `
<h1>Foo</h1>
<p><a href="http://bar" class="external">Bar</a></p>
<p><a href="#">Baz</a></p>
<p>Qux</p>
`
const content = HTML2React(html, {
'a.external': ExternalLink,
'p:nth-of-type(3)': (props) => <p><Link {...props} /></p>,
a: Link
})
render(
<div>
{content}
</div>,
document.getElementById('root')
)
License
MIT (http://www.opensource.org/licenses/mit-license.php)
See LICENSE attached.
Related Skills
bluebubbles
349.7kUse when you need to send or manage iMessages via BlueBubbles (recommended iMessage integration). Calls go through the generic message tool with channel="bluebubbles".
node-connect
349.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
slack
349.7kUse when you need to control Slack from OpenClaw via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
frontend-design
109.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
