Render HTML в React Native
В моем приложении React Native я использую данные JSON, у которых есть необработанные HTML-элементы: <p>This is some text. Let’s figure out...</p>
Я добавил данные в представление в своем приложении следующим образом:
<Text>{this.props.content}</Text>
Проблема заключается в том, что HTML выходит из raw, он не отображается так, как в браузере. Есть ли способ заставить мои данные JSON выглядеть так, как в браузере, в моем представлении приложения?
Спасибо.
Ответы
Ответ 1
Изменить март 2017: поддержка html
устарела. Вместо этого используйте source
:
<WebView source={{html: '<p>Here I am</p>'}} />
https://facebook.github.io/react-native/docs/webview.html#html
Благодаря Justin для указания этого.
Edit Feb 2017: PR был принят некоторое время назад, поэтому для рендеринга HTML в React Native просто:
<WebView html={'<p>Here I am</p>'} />
Оригинальный ответ:
Я не думаю, что в настоящее время это возможно. Ожидается поведение, которое вы видите, поскольку компонент Text только выводит... ну, текст. Вам нужен другой компонент, который выводит HTML - и что WebView.
К сожалению, прямо сейчас нет способа непосредственно установить HTML на этом компоненте:
https://github.com/facebook/react-native/issues/506
Однако я только что создал этот PR, который реализует базовую версию этой функции, поэтому, надеюсь, она скоро приземлится в какой-то форме.
Ответ 2
Я нашел этот компонент. https://github.com/jsdf/react-native-htmlview
Этот компонент принимает HTML-контент и отображает его как собственные виды, с настраиваемым стилем и обработкой ссылок и т.д.
Ответ 3
React Native обновил компонент WebView, чтобы обеспечить прямой рендеринг html. Вот пример, который работает для меня
var htmlCode = "<b>I am rendered in a <i>WebView</i></b>";
<WebView
ref={'webview'}
automaticallyAdjustContentInsets={false}
style={styles.webView}
html={htmlCode} />
Ответ 4
<WebView ref={'webview'} automaticallyAdjustContentInsets={false} source={require('../Assets/aboutus.html')} />
Это сработало для меня:) У меня есть html текстовый файл aboutus.