Render HTML tags as React Native components.
- Supports custom renderers for tags
- Supports inline styles in HTML
- Supports StyleSheet object with tag and class name based styles
- Inbuilt renderers for various tags including images, iframes, list items etc.
yarn add react-native-jumbo-html
React component which takes an HTML string and renders it as React Native components.
html
- string containing the HTML to rendermappings
- an object with mappings for tags to React componentssheet
- an object with a style sheet, they keys can be tag name or class name selectors
Each component in the mappings
object will receive the following props:
tagName
- name of the tag that's being renderedclassList
- an array with the list of class names on the tagattrs
- an object with all the attributes of the tagstyle
- styles for the componentchildren
- children elements for the component
For quick working demo, use Expo app to preview the example: https://expo.io/@usrbowe2/jumbo-html
import * as React from 'react';
import { StyleSheet } from 'react-native';
import { HTMLRenderer } from 'react-native-jumbo-html';
import CustomImage from './CustomImage';
const html = `
<p>Hello world</p>
`;
const mappings = {
img: CustomImage
};
export default function App() {
return (
<HTMLRenderer
html={html}
sheet={styles}
mappings={mappings}
/>
);
}
const styles = StyleSheet.create({
a: {
color: 'blue'
},
'.red': {
color: 'red'
}
});
The default list of mappings. You can reuse the mappings when adding additional functionality and don't have to re-implement the components.
While developing, you can run the example app to test your changes.
Make sure your code passes Flow and ESLint. Run the following to verify:
yarn run flow
yarn run lint
To fix formatting errors, run the following:
yarn run lint -- --fix
Remember to add tests for your change if possible.