ReactNative: 使用网页组件WebView组件
一、简介
在移动端开发中,很多时候需要嵌入一个网页来帮助实现某一个活动,这方式大大提高了活动快速迭代的灵活性,在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组件的更多相关文章
- ReactNative WebView组件详解
在开发Android的时候,一般我们会有一些加载网页的需求,或者执行一些JavaScript,我们都知道在Android中实现这个功能的控件是WebView,在ReactNative中也有实现此类需求 ...
- React Native之网页组件WebView的使用与通信
在实际开发中,我们通常会嵌入一些html页面,官方为我们提供了一个非常好用的网页组件WebView,通过这个组件我们可以通过传入一个url或者是传入一段html 一. WebView的基本属性方法介绍 ...
- Android WebView组件 访问部分网页崩溃问题【已解决】
最近刚接触Android,在测试WebView组件时发现总是出现崩溃现像: 提示:ERR_CLEARTEXT_NOT_PERMITTED 当时以为是权限问题,查找自己的AndroidManifest文 ...
- Webview组件和HTML的介绍
Deviceone平台并不是基于html5的跨平台开发工具.我们开发一个app都是使用原生的组件,但是在某些场景下html5也是非常好的选择,比如复杂的图文混排(类似新闻),比如报表chart之类用h ...
- Android 4.2版本以下使用WebView组件addJavascriptInterface方法存在JS漏洞
JS注入漏洞存在的Android版本:Android < 4.2 综述:Android的SDK中提供了一个WebView组件,用于在应用中嵌入一个浏览器来进行网页浏览.WebView组件中的ad ...
- 小程序web-view组件
不久前微信小程序发布了web-view组件,这个消息在各个圈里引起不小的涟漪.近期正好在做小程序的项目,便研究了一下这个让大家充满期待的组件. 1,web-view这个组件是什么鬼? 官网的介绍: ...
- [转]小程序web-view组件
本文转自:https://www.cnblogs.com/-nothing-/p/7910355.html 1,web-view这个组件是什么鬼? 官网的介绍:web-view 组件是一个可以用来承载 ...
- 安卓开发笔记——WebView组件
我们专业方向本是JAVA Web,这学期突然来了个手机App开发的课设,对于安卓这块,之前自学过一段时间,有些东西太久没用已经淡忘了 准备随笔记录些复习笔记,也当做温故知新吧~ 1.什么是WebVie ...
- 微信小程序中的 web-view 组件
web-view 是一个可以承载 web 网页的容器,当 WXML 文件中存在 web-view 组件时,其他组件会自动全部失效,而且 web-view 承载的组件会自动铺满小程序的整个页面.其他组件 ...
随机推荐
- 【JavaEE】之MyBatis的ParameterType的使用
在MyBatis的Mapper.xml文件中,参数的表示方法有两种:一种是使用 “#{XXX}” 的方式表示的,另一种是使用 “${XXX}” 的方式表示的.今天来介绍以下这两种方式的不同之处. 1. ...
- vsftp安装和配置
2013-10-10 10:49:48| 分类: Linux|举报|字号 订阅 源码下载地址:ftp://vsftpd.beasts.org/users/cevans/untar/ 1. ...
- 处理器CPU天梯图,显卡天梯图(性能排名图)
自己网上找的几个图,仅供参考,买电脑可以看看了~
- OSI-传输层
OSI-传输层 端口号(2字节 SYN(1bit) ACK(1bit) 会话多路复用(为什么一个IP地址可以做很多事情?) 源端口地址可以不同 五元组(世界上没有相同的2个五元组) 源IP地址-目的I ...
- json序列化反序列化Jackson相关注解
1.@Transient @Transient表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性:如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则ORM框架 ...
- 第三章 学习Shader所需的数学基础(2)
目录 1.坐标空间 1.2 坐标空间的变换 @ 1.坐标空间 我们在以前渲染流水线中就接触了坐标空间的变换.例如,在学习顶点着色器流水线阶段时,我们说过,顶点着色器的最基本功能就是把模型的顶点坐标从模 ...
- Spring Boot 最简单整合Shiro+JWT方式
简介 目前RESTful大多都采用JWT来做授权校验,在Spring Boot 中可以采用Shiro和JWT来做简单的权限以及认证验证,在和Spring Boot集成的过程中碰到了不少坑.便结合自身以 ...
- Swoole高效跟传统的web开发有什么区别?
一.swoole的运行模式 Swoole高效跟传统的web开发有什么区别,除了传统的LAMP/LNMP同步开发模式,swoole的异步开发模式是怎么样的. 1.1.传统web开发模式 PHP web开 ...
- CSU OJ1960
有一棵由N个结点构成的树,每一条边上都有其对应的权值.现在给定起点,求从该点出发的一条路径(至少有一条边)使得这条路径上的权值之和最大,并输出这个最大值. Input 第一行一个正整数T,代表数据组数 ...
- 自然语言处理(NLP) - 数学基础(1) - 排列组合
正如我在<自然语言处理(NLP) - 数学基础(1) - 总述>一文中所提到的NLP所关联的概率论(Probability Theory)知识点是如此的多, 饭只能一口一口地吃了, 我们先 ...