RenderHTMLProps
interface
RenderHTMLProps
{
 Â
GenericPressable
?
:
ComponentType
<
GenericPressableProps
>
;
 Â
WebView
?
:
ComponentType
<
any
>
;
 Â
allowedStyles
?
:
CSSPropertyNameList
;
 Â
baseStyle
?
:
MixedStyleDeclaration
;
 Â
bypassAnonymousTPhrasingNodes
?
:
boolean
;
 Â
classesStyles
?
:
Readonly
<
Record
<
string
,
MixedStyleDeclaration
>
>
;
 Â
computeEmbeddedMaxWidth
?
:
(
contentWidth
:
number
,
tagName
:
string
)
=>
number
;
 Â
contentWidth
?
:
number
;
 Â
customHTMLElementModels
?
:
HTMLElementModelRecord
;
 Â
customListStyleSpecs
?
:
Record
<
string
,
ListStyleSpec
>
;
 Â
dangerouslyDisableHoisting
?
:
boolean
;
 Â
dangerouslyDisableWhitespaceCollapsing
?
:
boolean
;
 Â
debug
?
:
boolean
;
 Â
defaultTextProps
?
:
TextProps
;
 Â
defaultViewProps
?
:
ViewProps
;
 Â
defaultWebViewProps
?
:
any
;
 Â
domVisitors
?
:
DomVisitorCallbacks
;
 Â
emSize
?
:
number
;
 Â
enableCSSInlineProcessing
?
:
boolean
;
 Â
enableExperimentalBRCollapsing
?
:
boolean
;
 Â
enableExperimentalGhostLinesPrevention
?
:
boolean
;
 Â
enableExperimentalMarginCollapsing
?
:
boolean
;
 Â
enableUserAgentStyles
?
:
boolean
;
 Â
fallbackFonts
?
:
FallbackFontsDefinitions
;
 Â
htmlParserOptions
?
:
ParserOptions
;
 Â
idsStyles
?
:
Readonly
<
Record
<
string
,
MixedStyleDeclaration
>
>
;
 Â
ignoreDomNode
?
:
(
node
:
Node
,
parent
:
NodeWithChildren
)
=>
unknown
;
 Â
ignoredDomTags
?
:
Array
<
string
>
;
 Â
ignoredStyles
?
:
CSSPropertyNameList
;
 Â
onDocumentMetadataLoaded
?
:
(
documentMetadata
:
DocumentMetadata
)
=>
void
;
 Â
onHTMLLoaded
?
:
(
html
:
string
)
=>
void
;
 Â
onTTreeChange
?
:
(
ttree
:
TDocument
)
=>
void
;
 Â
pressableHightlightColor
?
:
string
;
 Â
provideEmbeddedHeaders
?
:
EmbeddedHeadersProvider
;
 Â
remoteErrorView
?
:
(
source
:
HTMLSourceUri
)
=>
ReactElement
<
any
,
string
|
JSXElementConstructor
<
any
>
>
;
 Â
remoteLoadingView
?
:
(
source
:
HTMLSourceUri
)
=>
ReactElement
<
any
,
string
|
JSXElementConstructor
<
any
>
>
;
 Â
renderers
?
:
CustomTagRendererRecord
;
 Â
renderersProps
?
:
Partial
<
RenderersProps
>
;
 Â
selectDomRoot
?
:
(
node
:
NodeWithChildren
)
=>
any
;
 Â
setMarkersForTNode
?
:
SetMarkersForTNode
;
 Â
source
:
HTMLSource
;
 Â
systemFonts
?
:
Array
<
string
>
;
 Â
tagsStyles
?
:
Readonly
<
Record
<
string
,
MixedStyleDeclaration
>
>
;
}
Props for the ​RenderHTML
component.
#
FieldsGenericPressable
#
A component used to wrap pressable elements (e.g. when provided onPress
).
Note that textual elements will not be wrapped; TextProps.onPress
will
be used instead.
Default: A TouchableNativeFeedback based component on Android, TouchableHighlight based component on other platforms.
WebView
#
WebView
?
:
ComponentType
<
any
>
;
The WebView component used by plugins (iframe, table)... See @native-html/plugins.
Default: () => null
allowedStyles
#
Whitelist specific inline CSS style properties and ignore the others.
warning
Property names must be camelCased: for example, background-color
should be written backgroundColor
.
baseStyle
#
The default style for the document (root). Inheritable styles will be transferred to children. That works also for textual styles.
Remarks
Any fontFamily
used in those styles must be registered with
​systemFonts
prop.
warning
Do NOT use the StyleSheet
API to create those styles.
bypassAnonymousTPhrasingNodes
#
bypassAnonymousTPhrasingNodes
?
:
boolean
;
When true
(default), anonymous ​TPhrasing
nodes parents of a
lonely ​TText
node are not translated as React Native Text
elements. Instead, their child is directly rendered, e.g. with no Text
wrapper.
Default: true
warning
Unless strictly necessary, this should be left to true
because
some styles don't apply to nested React Native Text
elements
(borderRadius
, padding
...).
#
ExampleWith true
:
is translated to
With false
:
is translated to
classesStyles
#
Provide mixed styles to target elements selected by CSS classes.
Remarks
Any fontFamily
used in those styles must be registered with
​systemFonts
prop.
warning
Do NOT use the StyleSheet
API to create those styles.
computeEmbeddedMaxWidth
#
computeEmbeddedMaxWidth
?
:
(
contentWidth
:
number
,
tagName
:
string
)
=>
number
;
A function which takes contentWidth and tagName as arguments and returns a new width. Can return Infinity to denote unconstrained widths.
Default: (c) => c
Remarks
- Take advantage of ​
useComputeMaxWidthForTag
hook inside custom renderers to get the maximum width for this tag. - Changes to this prop will cause a react tree update. Always memoize it.
contentWidth
#
contentWidth
?
:
number
;
The width of the HTML content to display. The recommended practice is to pass
useWindowDimensions().width
minus any padding or margins.
Default: Dimensions.get('window').width
customHTMLElementModels
#
Customize element models for target tags.
customListStyleSpecs
#
Provide support for list style types which are not supported by this library.
Remarks
Check the numerous presets provided by @jsamr/counter-style as they require zero-effort!
#
ExampledangerouslyDisableHoisting
#
dangerouslyDisableHoisting
?
:
boolean
;
Experimental
Disable hoisting. Especially useful for rendering with react-native-web. Note that your layout might break in native!
Default: false
dangerouslyDisableWhitespaceCollapsing
#
dangerouslyDisableWhitespaceCollapsing
?
:
boolean
;
Experimental
Disable whitespace collapsing. Especially useful if your html is being pre-processed server-side with a minifier.
Default: false
debug
#
debug
?
:
boolean
;
Log to the console a snapshot of the rendered ​TDocument
after each
transient render tree invalidation.
Default: false
defaultTextProps
#
defaultTextProps
?
:
TextProps
;
Default props for Text elements in the render tree.
Remarks
"style" will be merged into the tnode own styles.
defaultViewProps
#
defaultViewProps
?
:
ViewProps
;
Default props for View elements in the render tree.
Remarks
"style" will be merged into the tnode own styles.
defaultWebViewProps
#
defaultWebViewProps
?
:
any
;
Default props for WebView elements in the render tree used by plugins.
domVisitors
#
An object which callbacks will be invoked when a DOM element or text node has been parsed and its children attached. This is great to tamper the dom, remove children, insert nodes, change text nodes data... etc.
emSize
#
emSize
?
:
number
;
The default value in pixels for 1em.
enableCSSInlineProcessing
#
enableCSSInlineProcessing
?
:
boolean
;
Enable or disable inline CSS processing of inline styles.
Default: true
Remarks
If you want to allow or disallow specific properties, use
allowedStyles
or ignoredStyles
props.
enableExperimentalBRCollapsing
#
enableExperimentalBRCollapsing
?
:
boolean
;
Follow closely the HTML standard and ignore <br>
tags closing an
inline formatting context.
Default: false
Remarks
Recommended value is true
on non-web platforms. Also note that
this is an experimental feature, thus subject to behavioral instability.
#
ExampleWhen this flag is set to true
, one line is printed instead of two on
native platforms, which is the HTML-compliant behavior.
enableExperimentalGhostLinesPrevention
#
enableExperimentalGhostLinesPrevention
?
:
boolean
;
React Native doesn't handle lines like we would expect on a web browser. For example:
will span 20 dpi in height. Setting this prop to true
will make
the renderer take those React Native oddities into account.
See also this ticket: https://git.io/JErwX
Default: false
Remarks
This is an experimental feature, thus subject to behavioral instability.
enableExperimentalMarginCollapsing
#
enableExperimentalMarginCollapsing
?
:
boolean
;
Enable or disable margin collapsing CSS behavior (experimental!). See MDN docs.
Default: false
Remarks
Limitations:
- Only adjacent siblings collapsing is implemented.
- If one of the margins height is in percent, no collapsing will occur.
- Will apply indiscriminately to all
display
properties (including flex), which is not standard. - Might not work well with ​
TPhrasing
nodes having only one child.
This is an experimental feature, thus subject to behavioral instability.
enableUserAgentStyles
#
enableUserAgentStyles
?
:
boolean
;
Enable or disable fallback styles for each tag. For example, pre
tags
will have whiteSpace
set to 'pre' by default.
Default: true
fallbackFonts
#
A record for specific CSS fonts.
Remarks
Use Plaform.select({ ios: ..., android: ..., default: ...})
.
htmlParserOptions
#
htmlParserOptions
?
:
ParserOptions
;
ParserOptions for htmlparser2.
Default: { decodeEntities: true }
idsStyles
#
Provide mixed styles to target elements identified by the id
attribute.
Remarks
Any fontFamily
used in those styles must be registered with
​systemFonts
prop.
warning
Do NOT use the StyleSheet
API to create those styles.
ignoreDomNode
#
Ignore specific DOM nodes.
Returns: true
if this node should not be included in the DOM, anything
else otherwise.
Remarks
- The function is applied during DOM parsing, thus with very little overhead. However, it means that one node next siblings won't be available since it has not yet been parsed.
- Use
ignoredDomTags
if you just need to target specific tag names.
warning
When this function is invoked, the node has not yet been attached
to its parent or siblings. Use the second argument (parent
) if you
need to perform logic based on parent.
ignoredDomTags
#
ignoredDomTags
?
:
Array
<
string
>
;
A list of lowercase tags which should not be included in the DOM.
ignoredStyles
#
Blacklist specific inline CSS style properties and allow the others.
Remarks
Note that if you don't want inline style processing at all, you
should set enableCSSInlineProcessing
prop to false
.
warning
Property names must be camelCased: for example, background-color
should be written backgroundColor
.
onDocumentMetadataLoaded
#
Handler invoked when the document metadata is available. It will re-trigger on HTML content changes.
onHTMLLoaded
#
onHTMLLoaded
?
:
(
html
:
string
)
=>
void
;
Triggered when HTML is available to the RenderHTML component.
onTTreeChange
#
Triggered when the transient render tree changes. Useful for debugging.
pressableHightlightColor
#
pressableHightlightColor
?
:
string
;
Color used for pressable items, either for the ripple effect (Android), or highlight (other platforms).
Default: rgba(38, 132, 240, 0.2)
provideEmbeddedHeaders
#
Provide headers for specific embedded elements, such as images, iframes...
#
ExampleremoteErrorView
#
remoteErrorView
?
:
(
source
:
HTMLSourceUri
)
=>
ReactElement
<
any
,
string
|
JSXElementConstructor
<
any
>
>
;
Replace the default error if a remote website's content could not be fetched.
remoteLoadingView
#
remoteLoadingView
?
:
(
source
:
HTMLSourceUri
)
=>
ReactElement
<
any
,
string
|
JSXElementConstructor
<
any
>
>
;
Replace the default loader while fetching a remote website's content.
renderers
#
Your custom renderers.
Remarks
TypeScript users: To have intellisense for custom renderers, explicitly
set your custom renderer type to one of ​CustomBlockRenderer
,
​CustomTextualRenderer
or ​CustomMixedRenderer
depending
on the ​HTMLContentModel
defined for this tag (see example below).
#
ExampleA custom renderer for <div>
tags which trigger an alert on press.
renderersProps
#
Props to use in custom renderers with useRendererProps
.
Remarks
- When you use the hook, you'll get this object deep-merged with default renderers props.
- Typescript users: If you need to add fields to the ​
RenderersProps
interface, you should use module augmentation:
selectDomRoot
#
Select the DOM root before TTree generation. For example, you could iterate over children until you reach an article element and return this element.
Remarks
Applied after DOM parsing, before normalization and TTree construction. Before normalization implies that a body will be added in the tree after selecting root.
setMarkersForTNode
#
Set custom markers from a ​TNode
and all its descendants. ​Markers
will be
accessible in custom renderers via tnode.markers
prop.
Default: () => null
source
#
The object source to render (either { uri }
, { html }
or { dom }
).
systemFonts
#
systemFonts
?
:
Array
<
string
>
;
A list of fonts available in the current platform. These fonts will be used
to select the first match in CSS fontFamily
property, which supports a
comma-separated list of fonts. By default, a handful of fonts are selected
per platform.
Remarks
- You need to specify any font family you wish to use via
*styles
props here, otherwise those styles will be ignored. - If you are using expo, you should use or extend
Constants.systemFonts
.
#
ExampletagsStyles
#
Provide mixed styles to target HTML tag names.
Remarks
Any fontFamily
used in those styles must be registered with
​systemFonts
prop.
warning
Do NOT use the StyleSheet
API to create those styles.