Cara menggunakan react-native-render-html props

Suppose you want to convert your website or web application into a mobile application using React Native, or you have static HTML code that you want to show on any particular page in your application. What will you do? Will you re-write a whole bunch of code?

Certainly no need for it. You can render HTML directly into React Native. Woah! That’s amazing. So, in this article, we will learn how to render HTML to React Native using the react-native-render-html library. Let’s see how it works.

Jump ahead:

A few prerequisites for this tutorial include having npm and Node.js installed on your device along with having a basic understanding of React and React Native.

Setting up our React Native project

To start this tutorial, we need to set up a React Native project. We will do so by running the following command:

npx react-native init MyTestApp

Now let’s move ahead. After creating a project, we will run it once to check everything is working as expected using either of the following commands:

npm run android 
//or 
npm run ios

The app will build and start running as per your chosen configuration, whether you’re using a virtual device or an Android or iOS device.

You can modify the

npm run android 
//or 
npm run ios
2 file to see the changes on your homepage — the entry page of your application. I changed a few lines of code to check if it’s working fine or not. If everything goes well, you can see a homepage like the one shown below:

Cara menggunakan react-native-render-html props
Cara menggunakan react-native-render-html props

Using react-native-render-html to render HTML to React Native

In this tutorial, we will use the

npm run android 
//or 
npm run ios
4 package to render HTML into our React Native application. Keep some sample HTML code to use later in the React Native app.

The react-native-render-html library is an open source component with over three thousand GitHub stars and 46 contributors. It takes your HTML and renders 100% native views in your iOS or Android apps.

This library supports all the textual CSS methods we typically use while developing web applications. Apart from text, it also supports images, anchor tags, and lists.

How react-native-render-html parses HTML into React Native

The react-native-render-html docs use the following data flow diagram to demonstrate how this tool parses HTML into React Native:

Cara menggunakan react-native-render-html props
Cara menggunakan react-native-render-html props

In summary, first, the HTML markup we passed will be parsed into the DOM. Then, the Transient Render Tree is assembled based on input. After that, TTree is rendered into Virtual DOM.

To learn more about how rendering works, refer to the docs. Otherwise, let’s move on to our practical example.

Applying styles to elements

For styling, you can use an inline style, like so:

The above won’t break your application. It supports four props to customize element styles: base, id style, class style, and tag style.

There’s also another way to deal with styling, which is by using

npm run android 
//or 
npm run ios
8 records. Basically,
npm run android 
//or 
npm run ios
8 is an object that contains all your CSS; the styles will be applied from there. See the example below:

//JavaScript
const mixedStyle = {
  body: {
    whiteSpace: 'normal',
    color: '#aaa'
  },
  p: {
    color: '#fff'
  }
}

To use your custom styles during the HTML render to React Native, the react-native-render-html library supports the

1 attribute. You can pass your declared style in that attribute, like so:

//JavaScript

Remember, when rendering HTML and custom styles to a React Native application, React Native styles will be ignored at build time and will not be applied or reflected.

With the react-native-render-html library, you can play with the

3 ecosystem, which is used for DOM tampering. You can process the DOM at any point in time. For example:

import React from 'react';
import { useWindowDimensions } from 'react-native';
import RenderHtml from 'react-native-render-html';
import { removeElement, isTag } from 'domutils';

function onElement(element) {
  // Remove the first p from div which has class "parentDiv"
  if (element.attribs['class'] == 'parentDiv') {
    let i = 0;
    for (const p of element.children) {
      if (isTag(p) && i < 1) {
        removeElement(p);
        i++;
      }
    }
  }
}

const source = {
  html: `
    

para-1

para-2

para-3

` }; const domVisitors = { onElement: onElement }; export default function App() { const { width } = useWindowDimensions(); return ( ); }

Now let’s render HTML code in the application using an external library. For that, you need to modify the

npm run android 
//or 
npm run ios
2 file as shown below:

//JavaScript - JSX
import type {Node} from 'react';
import {
  ScrollView,
  Text,
  View,
} from 'react-native';
import RenderHtml from 'react-native-render-html';

const source = {
  html: `
    

Section 1

Section 2

` }; const App: () => Node = () => { return ( Render HTML to React Native demo ); }; export default App;

Beginning at line number 10, in the

5 variable, we wrote our HTML code. This code is then rendered by a method called

6 at line number 94. We have to provide our HTML as a source attribute, and the package will handle the rest.

To demonstrate that the rendered HTML from the external library will look the same as code written with React Native, line number 91 uses the default React Native

7 method to show the text.

Both the text rendered by the default method and the text output from rendering HTML should look like the below:

Cara menggunakan react-native-render-html props
Cara menggunakan react-native-render-html props

Exploring an alternative to react-native-render-html

Apart from the react-native-render-html library, there’s one more option for rendering web components into React Native applications — React Native WebView. This modern cross-platform alternative to the built-in webview has great support for embedding anything from whole web apps to simple HTML files.

In this library, you can find a similar pattern as above. Check out the below example:

//Javascript - JSX
import React, { Component } from 'react';
import { StyleSheet, Text, View } from 'react-native';
import { WebView } from 'react-native-webview';

// ...
class MyWebComponent extends Component {
  render() {
    return ;
  }
}

This library has many useful features — like uploading and downloading files, custom cookies, page navigations, and many more. Check out this complete guide to React Native WebView to see if it’s the right solution for your needs.

Conclusion

React Native is in demand due to the popularity of React. If you understand React, it’s straightforward to make a mobile application via React using native support for React Native.


Cara menggunakan react-native-render-html props
Cara menggunakan react-native-render-html props

Over 200k developers use LogRocket to create better digital experiences

Cara menggunakan react-native-render-html props
Cara menggunakan react-native-render-html props
Learn more →


In addition, you may have HTML ready and want to make a mobile application using your existing code rather than rewriting it to fit your target platform. It is possible to natively render HTML to React Native using one of the approaches discussed above. You don’t need to reinvent the wheel to make that work in an Android or an IOS application.

I used to rewrite the code to make it a native application, but I came to know some pretty amazing libraries I can use to showcase my HTML. The resulting view is the same as the native view, so this approach does not impact the user experience.

If you want to render HTML directly in your React Native application, make sure you check to see if the library you want to use fits your requirements. If you have any questions, let me know in the comments below!

LogRocket: Instantly recreate issues in your React Native apps.

Cara menggunakan react-native-render-html props
Cara menggunakan react-native-render-html props

LogRocket is a React Native monitoring solution that helps you reproduce issues instantly, prioritize bugs, and understand performance in your React Native apps.

LogRocket also helps you increase conversion rates and product usage by showing you exactly how users are interacting with your app. LogRocket's product analytics features surface the reasons why users don't complete a particular flow or don't adopt a new feature.

Apa itu props pada React Native?

Pengertian Props Pada ReactJS Props adalah argumen yang diteruskan ke komponen React. Props diteruskan ke komponen melalui atribut HTML. Kemudian apa yang bisa di passing atau dikirim dalam props? Yang bisa dikirim dalam props bisa berupa data, variables, state function dan bahkan sebuah kelas.

Secara konsep apakah yang menjadi basis utama React?

Gagasan utama di balik React JS adalah: “untuk membangun aplikasi berskala besar dengan data yang selalu berubah dari waktu ke waktu” dan menangani tantangan dengan baik. React JS memberi developers kemampuan bekerja dengan browser virtual (DOM) yang jauh lebih cepat dan ramah pengguna, daripada yang asli.

Apa Itu Komponen react JS?

React JS merupakan library JavaScript yang digunakan untuk membuat user interface (UI) website. React JS berisi library kode-kode JavaScript yang juga berfungsi untuk mempermudah dan mempercepat web development.

Untuk membuat sebuah tampilan ke layar React Native menggunakan syntaks apa?

Pada react native untuk menampilkan suatu tampilan pada screen adalah menggunakan JSX. JSX merupakan syntax XML yang dimasukkan kedalam JavaScript yang digunakan pada apliksi React Native.