Socket
Socket
Sign inDemoInstall

react-native-webview

Package Overview
Dependencies
0
Maintainers
2
Versions
318
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-native-webview


Version published
Maintainers
2
Install size
17.0 kB
Created

Package description

What is react-native-webview?

The react-native-webview package is a powerful tool for embedding web content into a React Native application. It allows developers to render web pages, handle navigation, and interact with web content using JavaScript. This package is highly customizable and supports various features such as injecting JavaScript, handling navigation events, and more.

What are react-native-webview's main functionalities?

Basic WebView

This feature allows you to embed a basic web page within your React Native application. The WebView component takes a source prop that specifies the URL of the web page to be loaded.

import React from 'react';
import { WebView } from 'react-native-webview';

const MyWebView = () => (
  <WebView
    source={{ uri: 'https://www.example.com' }}
    style={{ marginTop: 20 }}
  />
);

export default MyWebView;

Injecting JavaScript

This feature allows you to inject JavaScript into the web page being loaded. The injectedJavaScript prop takes a string of JavaScript code that will be executed once the page has loaded.

import React from 'react';
import { WebView } from 'react-native-webview';

const MyWebView = () => (
  <WebView
    source={{ uri: 'https://www.example.com' }}
    injectedJavaScript={"document.body.style.backgroundColor = 'red';"}
    style={{ marginTop: 20 }}
  />
);

export default MyWebView;

Handling Navigation Events

This feature allows you to handle navigation events within the WebView. The onNavigationStateChange prop takes a function that will be called whenever the navigation state changes, providing details about the navigation event.

import React from 'react';
import { WebView } from 'react-native-webview';

const MyWebView = () => (
  <WebView
    source={{ uri: 'https://www.example.com' }}
    onNavigationStateChange={(navState) => {
      console.log('Navigation state changed:', navState);
    }}
    style={{ marginTop: 20 }}
  />
);

export default MyWebView;

Other packages similar to react-native-webview

Readme

Source

react-native-webview

android webview for react-native

Installation and How to use

Step 1 - NPM Install
npm install --save react-native-webview
Step 2 - Update Gradle Settings
// file: android/settings.gradle
...

include ':reactwebview', ':app' 
project(':reactwebview').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-webview')
 // if there are more library
 // include ':app' , ':libraryone' , ':librarytwo' , 'more...'
 // project(':libraryonename').projectDir = new File(rootProject.projectDir, '../node_modules/libraryonemodule')
 // project(':librarytwoname').projectDir = new File(rootProject.projectDir, '../node_modules/librarytwomodule')
 // more..
Step 3 - Update app Gradle Build
// file: android/app/build.gradle
...

dependencies {
    ...
    compile project(':reactwebview')
}
Step 4 - Register React Package
...
import com.heng.wheel.WheelPackage;

public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler {

    private ReactInstanceManager mReactInstanceManager;
    private ReactRootView mReactRootView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mReactRootView = new ReactRootView(this);
        mReactInstanceManager = ReactInstanceManager.builder()
                .setApplication(getApplication())
                .setBundleAssetName("index.android.bundle")
                .setJSMainModuleName("index.android")
                .addPackage(new MainReactPackage())
                .addPackage(new WebViewPackage()) // register webview package
                .setUseDeveloperSupport(BuildConfig.DEBUG)
                .setInitialLifecycleState(LifecycleState.RESUMED)
                .build();
        ...
    }
...

Step 5 - Require and use in Javascript
// file: index.android.js

var React = require('react-native');
var {
  AppRegistry,
  StyleSheet,
  ToastAndroid,
} = React;

var WebView = require('react-native-webview');

var WebViewTest = React.createClass({
    goBack: function() {
      this.refs.webview.goBack(); 
    },
    goForward: function() {
      this.refs.webview.goForward();
    },
    reload: function() {
      this.refs.webview.reload();
    },
    _onNavigationStateChange: function(event) {
      ToastAndroid.show(event.canGoBack + '',ToastAndroid.SHORT);
      ToastAndroid.show(event.canGoForward + '',ToastAndroid.SHORT);
      ToastAndroid.show(event.url ,ToastAndroid.SHORT);
      ToastAndroid.show(event.title ,ToastAndroid.SHORT);
      ToastAndroid.show(event.loading + '',ToastAndroid.SHORT);
    },
    render: function() {
    var reqUrl = "https://github.com/";
    return (
        <WebView
          ref='webview'
          automaticallyAdjustContentInsets={true}
          url={reqUrl}
          javaScriptEnabledAndroid={true}
          onNavigationStateChange={this._onNavigationStateChange}
          style={styles.webview}/>
    );
  }
});

var styles = StyleSheet.create({
  webview: {
    flex: 1,
  },
});

...

Notes

  • Only in the following versions tested , other versions do not guarantee success
// file: react-native-wheel/build.gradle

android {
    compileSdkVersion 23  //@
    buildToolsVersion "23.0.1"  //@

    defaultConfig {
        minSdkVersion 16 
        targetSdkVersion 22  //@
    }
}

dependencies {
    compile 'com.facebook.react:react-native:0.16.1'  //@
}


Keywords

FAQs

Last updated on 14 Dec 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc