1- import { Text , View , Image } from 'react-native' ;
2- import { parseDocument , ElementType } from 'htmlparser2' ;
3- import React , { PureComponent } from 'react' ;
1+ import { Text , View , Image } from 'react-native' ;
2+ import { parseDocument , ElementType } from 'htmlparser2' ;
3+ import React , { PureComponent } from 'react' ;
44
55export default class RenderHtmlSimple extends PureComponent {
6- ignoredTags = [ 'head' ] ;
7- textTags = [ 'span' , 'strong' , 'em' ] ;
8-
96 constructor ( props ) {
107 super ( props ) ;
118 this . ignoredTags = props . ignoredTags || this . ignoredTags ;
129 }
1310
14- renderTextNode ( textNode , index ) {
15- return < Text key = { index } > { textNode . data } </ Text > ;
11+ ignoredTags = [ 'head' ] ;
12+
13+ render ( ) {
14+ const { html, ...viewProps } = this . props ;
15+ const document = parseDocument ( html ) ;
16+ return (
17+ < View { ...viewProps } >
18+ { document . children . map ( ( c , i ) => this . renderNode ( c , i ) ) }
19+ </ View >
20+ ) ;
1621 }
1722
1823 renderElement ( element , index ) {
1924 if ( this . ignoredTags . indexOf ( element . name ) > - 1 ) {
2025 return null ;
2126 }
2227 if ( element . name === 'img' ) {
23- return < Image key = { index } source = { { uri : element . attribs . src } } /> ;
28+ return < Image key = { index } source = { { uri : element . attribs . src } } /> ;
2429 }
2530 const Wrapper = this . textTags . indexOf ( element . name ) > - 1 ? Text : View ;
2631 return (
@@ -40,13 +45,9 @@ export default class RenderHtmlSimple extends PureComponent {
4045 return null ;
4146 }
4247
43- render ( ) {
44- const { html, ...viewProps } = this . props ;
45- const document = parseDocument ( html ) ;
46- return (
47- < View { ...viewProps } >
48- { document . children . map ( ( c , i ) => this . renderNode ( c , i ) ) }
49- </ View >
50- ) ;
48+ renderTextNode ( textNode , index ) {
49+ return < Text key = { index } > { textNode . data } </ Text > ;
5150 }
51+
52+ textTags = [ 'span' , 'strong' , 'em' ] ;
5253}
0 commit comments