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 承载的组件会自动铺满小程序的整个页面.其他组件 ...
随机推荐
- 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(3)- Serial ISP模式(blhost)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的Serial ISP模式. 在上一篇文章 Boot配置(ISP Pin, OTP) 里痞子衡为大家 ...
- php 精度计算问题
PHP var_dump(intval(0.58 * 100)); 正确结果是 57,而不是 58 浮点运算惹的祸 其实这些结果都并非语言的 bug,但和语言的实现原理有关, js 所有数字统一为 N ...
- Python高级用法
Python高级用法 三元表达式 x = 10 y = 20 print(x if x > y else y) x = 100 y = 20 print(x if x > y else y ...
- 小白学 Python 爬虫(15):urllib 基础使用(五)
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- Snack3 一个新的微型JSON框架
Snack3 一个新的微型JSON框架 一个作品,一般表达作者的一个想法.因为大家想法不同,所有作品会有区别.就做技术而言,因为有很多有区别的框架,所以大家可以选择的框架很丰富. snack3.基于j ...
- springcloud-Eureka组件
一.简介 Eureka 是 Netflix 开发的服务发现框架,本身是一个基于 REST 的服务,主要用于定位运行在 AWS 域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的.SpringC ...
- iOS libsqlite3.0.tbd和libsqlite3.tbd的区别
ibsqlite3.0.tbd 只是一个快捷方式,其实也是指向libsqlite3.tbd的,如果libsqlite3.0.tbd指向的就是最新的libsqlite3.tbd,就不用更新了.
- [TimLinux] MySQL 导入sql文件数据慢的问题解决办法
慢的时候执行的命令: mysql -uusername -p -hip_address -Ddb_name < ./db.sql 快的时候执行的命令: mysql -uusername -p - ...
- [TimLinux] JavaScript 代码控制滚动条移动到顶部/底部
1. scrollIntoView函数 这个函数控制滚动条顶部内容.还是底部内容呈现在视图窗口中,接收一个参数:boolean值. true: 顶部出现在视图窗口中 false: 底部存在在视图窗口中 ...
- MySQL面试总结
MySQL面试总结 # MySQL的存储引擎 `MyISAM`(默认表类型):非事务的存储引擎,基于传统的`ISAM`(有索引的顺序访问方法)类型,是存储记录和文件的标准方法,不是事务安全,不支持外键 ...