This package has been deprecated

Author message:

Migrated to react-dom-renderer

@smikhalevski/react-html-renderer
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published

react-html-renderer build

Renders HTML source as React nodes using customizable element renderer.

npm install --save-prod @smikhalevski/react-html-renderer

Usage

Render an HTML as React nodes.

import {HtmlRenderer} from '@smikhalevski/react-html-renderer';

const MyComponent = () => (
    <HtmlRenderer value={'<b>Hello</b>, world'}/>
);
// → <><b>Hello</b>, world</>

Use the custom element renderer.

import {ElementRenderer, HtmlRenderer} from '@smikhalevski/react-html-renderer';

const elementRenderer: ElementRenderer = (tagName) => {
  // Tag names are lower cased
  if (tagName === 'bear') {
    return <strong>{'Bonjour'}</strong>;
  }
  // Forest tag is ignored
};

const MyComponent = () => (
    <HtmlRenderer
        value={'<Bear><Forest>'}
        elementRenderer={elementRenderer}
    />
);
// → <strong>Bonjour</strong>

Use customized DOM parser.

In this example we are going to initialize a parser that recognizes custom HTML entities.

Have a look at TagSoup and speedy-entities for more details on configuration.

import {DomParserContext, ElementRenderer, HtmlRenderer} from '@smikhalevski/react-html-renderer';
import {createEntityDecoder, createEntityManager} from 'speedy-entities';
import {createHtmlDomParser, domHandler} from 'tag-soup';

const entityManager = createEntityManager();

entityManager.set('wtfisthis', 'This is Sparta');

const parser = createHtmlDomParser(domHandler, {
  decodeText: createEntityDecoder(entityManager),
});

const result = render(
    <DomParserContext.Provider value={parser}>
      <HtmlRenderer value={'&wtfisthis;'}/>
    </DomParserContext.Provider>
);
// → <>This is Sparta</>

Readme

Keywords

Package Sidebar

Install

npm i @smikhalevski/react-html-renderer

Weekly Downloads

0

Version

1.0.1

License

MIT

Unpacked Size

9.21 kB

Total Files

16

Last publish

Collaborators

  • smikhalevski