一、简介

在移动端开发中,很多时候需要嵌入一个网页来帮助实现某一个活动,这方式大大提高了活动快速迭代的灵活性,在RN中,同样也这么处理这种情况的。其实,这种混合式开发称为Hybird APP,它们就是基于WebView来实现的。React-Native中的WebView组件提供的功能基本满足需求,现在就让我们来研究一下。

二、属性

//HTML字符串。已过期,官方推荐使用source代替
hml:PropTypes.string //URL字符串。已过期,官方推荐使用source代替
url:PropTypes.string //网页资源,拥有下面三个值
source
1、PropTypes.shape({
uri: PropTypes.string,
method: PropTypes.string,
headers: PropTypes.object,
body: PropTypes.string,
}),
2、PropTypes.shape({
html: PropTypes.string,
baseUrl: PropTypes.string,
}),
3、PropTypes.number //是否支持回弹效果
bounces: PropTypes.bool //滚动速率, normal: 0.998, fast: 0.99 (the default for iOS web view)
decelerationRate: ScrollView.propTypes.decelerationRate //是否支持滚动
scrollEnabled: PropTypes.bool //表示是否自动调整内部内容
automaticallyAdjustContentInsets: PropTypes.bool //内部内容偏移
contentInset: EdgeInsetsPropType //是否开启页面加载的状态
startInLoadingState: PropTypes.bool //是否支持JavaScript交互
javaScriptEnabled: PropTypes.bool //注入的JavaScript代码
injectedJavaScript: PropTypes.string //是否按照页面比例和内容高度比例自动缩放内容
scalesPageToFit: PropTypes.bool //是否支持网页内部音视频播放
allowsInlineMediaPlayback: PropTypes.bool

三、函数

//渲染失败
renderError: PropTypes.func //渲染中
renderLoading: PropTypes.func //即将对资源发送请求
onShouldStartLoadWithRequest: PropTypes.func //网页资源开始加载
onLoadStart: PropTypes.func //网页资源加载中
onLoad: PropTypes.func //网页资源加载结束
onLoadEnd: PropTypes.func //网页资源加载失败
onError: PropTypes.func //监听导航状态变化,可以在该函数中完成OAuth认证
onNavigationStateChange: PropTypes.func //收到H5的消息
onMessage: PropTypes.func //给H5发送消息
injectJavaScript: PropTypes.func

、使用

myWebView.js

import React, { Component } from 'react';

import {
StyleSheet,
View,
WebView,
Dimensions
} from 'react-native'; const {width, height} = Dimensions.get('window'); export default class MyWebView extends Component{ render() {
return (
<View style={styles.flex}>
<WebView
refs="webview"
style={styles.web}
source={{uri: "https://www.baidu.com"}}
automaticallyAdjustContentInsets={true}
scalesPageToFit={true}
startInLoadingState={true}
bounces={false}
javaScriptEnabled={true}
injectedJavaScript = {`alert('I AM XYQ');`}
onLoadStart={() => {
console.log("--onLoadStart--")
}}
onLoad={() => {
console.log("--onLoad--")
}}
onLoadEnd={() => {
console.log("--onLoadEnd--")
}}
onError={() => {
console.log("--onError--")
}}
/>
</View>
)
}
} const styles = StyleSheet.create({
flex: {
flex: 1
},
web: {
height: height,
width: width
}
});
-- ::36.436 [info][tid:com.facebook.react.JavaScript] --onLoadStart--
-- ::37.722 [info][tid:com.facebook.react.JavaScript] --onLoad--
-- ::37.723 [info][tid:com.facebook.react.JavaScript] --onLoadEnd--
>>>> frameSizeChanged =
-- ::38.679 [info][tid:com.facebook.react.JavaScript] --onLoad--
-- ::38.683 [info][tid:com.facebook.react.JavaScript] --onLoadEnd--

ReactNative: 使用网页组件WebView组件的更多相关文章

  1. ReactNative WebView组件详解

    在开发Android的时候,一般我们会有一些加载网页的需求,或者执行一些JavaScript,我们都知道在Android中实现这个功能的控件是WebView,在ReactNative中也有实现此类需求 ...

  2. React Native之网页组件WebView的使用与通信

    在实际开发中,我们通常会嵌入一些html页面,官方为我们提供了一个非常好用的网页组件WebView,通过这个组件我们可以通过传入一个url或者是传入一段html 一. WebView的基本属性方法介绍 ...

  3. Android WebView组件 访问部分网页崩溃问题【已解决】

    最近刚接触Android,在测试WebView组件时发现总是出现崩溃现像: 提示:ERR_CLEARTEXT_NOT_PERMITTED 当时以为是权限问题,查找自己的AndroidManifest文 ...

  4. Webview组件和HTML的介绍

    Deviceone平台并不是基于html5的跨平台开发工具.我们开发一个app都是使用原生的组件,但是在某些场景下html5也是非常好的选择,比如复杂的图文混排(类似新闻),比如报表chart之类用h ...

  5. Android 4.2版本以下使用WebView组件addJavascriptInterface方法存在JS漏洞

    JS注入漏洞存在的Android版本:Android < 4.2 综述:Android的SDK中提供了一个WebView组件,用于在应用中嵌入一个浏览器来进行网页浏览.WebView组件中的ad ...

  6. 小程序web-view组件

    不久前微信小程序发布了web-view组件,这个消息在各个圈里引起不小的涟漪.近期正好在做小程序的项目,便研究了一下这个让大家充满期待的组件.   1,web-view这个组件是什么鬼? 官网的介绍: ...

  7. [转]小程序web-view组件

    本文转自:https://www.cnblogs.com/-nothing-/p/7910355.html 1,web-view这个组件是什么鬼? 官网的介绍:web-view 组件是一个可以用来承载 ...

  8. 安卓开发笔记——WebView组件

    我们专业方向本是JAVA Web,这学期突然来了个手机App开发的课设,对于安卓这块,之前自学过一段时间,有些东西太久没用已经淡忘了 准备随笔记录些复习笔记,也当做温故知新吧~ 1.什么是WebVie ...

  9. 微信小程序中的 web-view 组件

    web-view 是一个可以承载 web 网页的容器,当 WXML 文件中存在 web-view 组件时,其他组件会自动全部失效,而且 web-view 承载的组件会自动铺满小程序的整个页面.其他组件 ...

随机推荐

  1. 实战webpack系列01

    01. 采坑webpack 一.webpack初章 // 一个常见的`webpack`配置文件 const webpack = require('webpack'); const HtmlWebpac ...

  2. 【10分钟学Spring】:@Profile、@Conditional实现条件化装配

    根据不同的环境来装配不同的bean 企业级开发中,我们一般有多种环境,比如开发环境.测试环境.UAT环境和生产环境.而系统中有些配置是和环境强相关的,比如数据库相关的配置,与其他外部系统的集成等. 如 ...

  3. 基于netty4.x开发时间服务器

    在写代码之前 先了解下Reactor模型: Reactor单线程模型就是指所有的IO操作都在同一个NIO线程上面完成的,也就是IO处理线程是单线程的.NIO线程的职责是: (1)作为NIO服务端,接收 ...

  4. NIO-Channel

    目录 NIO-Channel 目录 前言 什么是Channel 通道类型 如何使用 ServerSocketChannel SocketChannel FileChannel 总结 相关文献 NIO- ...

  5. 15.Django基础十一之认证系统

    一 auth模块 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Django作为一个 ...

  6. 一道Java程序输出题(继承-重载-覆盖-向上转型的问题)

    class A { public String show(D obj) { // func1 return ("A and D"); } public String show(A ...

  7. MRC ARC 混编

    今天一个人问我 什么是MRC 什么是ARC 要是一个工程里用到了MRC和ARC 怎么办 我当时就无语了 什么情况 这是....   好了正经一点 我说一下iOS5.0以后就开始可以使用ARC( Aut ...

  8. multipart/form-data 文件上传表单中 传递参数无法获取的原因!

    1.什么是multipart/form-data 首先我们需要明白在html中的enctype属性, enctype:规定了form表单在发送到服务器时候编码方式.他有如下的三个值. ①applica ...

  9. ACM-ICPC 2018 焦作赛区网络预赛 G题 Give Candies

    There are NN children in kindergarten. Miss Li bought them NN candies. To make the process more inte ...

  10. 用tensorflow求偏导

    # coding:utf-8 from __future__ import absolute_import from __future__ import unicode_literals from _ ...