react-raw-html
Version:
React components that output their children as raw HTML.
54 lines (34 loc) • 1.78 kB
Markdown
# react-raw-html
This is a simple library of React components that can embed raw HTML.
```javascript
import React from "react"
import RawHtml from "react-raw-html"
const MyComponent = (somePreformattedRawHtml) => {
// returns a div that embeds somePreformattedRawHtml without escaping it for the browser.
return <RawHtml.div>{somePreformattedRawHtml}</RawHtml.div>;
}
export default MyComponent;
```
This is just syntactic sugar around React's `dangerouslySetInnerHtml`.
Please note that embedding raw HTML that comes from untrusted sources can be extremely dangerous and lead to cross-site scripting attacks. You should only use these components if you are completely positive that the content you are embedding is safe.
Also, note that this project is compatible with `react-dom-stream`. When doing server-side rendering with `react-dom-stream`, components from `react-raw-html` can embed either strings *or streams* of raw HTML.
## Installation
```
npm install react-raw-html
```
## API
### RawHtml.\<tagname\>
All of the current non-empty HTML 5 tag names should be present on the RawHtml object as components. So if you want to embed raw HTML in a span, use `RawHtml.span`. If you want a div, use `RawHtml.div`. You get the idea.
### RawHtml.addTag(String)
If you want to use a tag that is not part of the HTML5 tag list, this method allows you to add a new tag to `RawHtml`. Note that the tag should be lower-cased, so that React doesn't think it is a React component.
```javascript
import React from "react"
import RawHtml from "react-raw-html"
RawHtml.addTag("mycooltag");
const MyComponent = (somePreformattedRawHtml) => {
return <RawHtml.mycooltag>{somePreformattedRawHtml}</RawHtml.mycooltag>;
}
export default MyComponent;
```
## License
Apache 2.0