需求背景
我们最近要做一个React Native的产品详情页,里面有一部分内容展示的是服务端下发的html标签(运营人员编写的,内容不固定,且很随意)。需求点是:1、展示富文本,包括img、span、div等基本html标签;2、控制富文本的整体样式,比如业务配置的图片大小不一,我们要统一已屏幕宽度为基准,高度自适应。
第三方组件react-native-htmlview
要实现这个需求,我第一想到的就是react-native-htmlview,我们之前断断续续的RN页面里的富文本展示需求用的都是这个组件。而且这个组件有一个好处就是不用传入高度,能根据富文本内容自适应高度。使用也很简单:
import HTMLView from 'react-native-htmlview'
value={wrapper}
/>
只需要把富文本传给value就行了,可是实际展示效果令人堪忧。
文本虽然展示比较差,但图片展示还不错。
于是我就着手去支持文本标签,最终效果如图:
还不错吧。如果你的需求就只是展示下富文本(图片、文本),那这个开源组件就可以满足你的需求了。先说下我是如何把文本样式正确展示出来的:
value={wrapper}
renderNode={renderNode}
/>
function renderNode(node, index, siblings, parent, defaultRenderer) {
if(node.name == &