一、简介

在移动端开发中,很多时候需要嵌入一个网页来帮助实现某一个活动,这方式大大提高了活动快速迭代的灵活性,在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. Stream系列(十二) PartitioningBy方法使用

    分割列表 视频讲解: https://www.bilibili.com/video/av78106120/ EmployeeTestCase.java package com.example.demo ...

  2. java 获取当前年份 月份 日期

    import java.util.Calendar; public class Main {  public static void main(String[] args) {    Calendar ...

  3. 链表-C语言实现

    链式存储线性表的结构体: typedef int ElemType; //元素类型 typedef struct Node //链表结构体 { ElemType date; //链表结点数据域 str ...

  4. 网站出现bug,我深夜被叫醒处理,用一个触发器解决了问题

    凌晨两点,我正在睡梦之中,此时电话忽然想起,在漆黑的深夜中显得格外刺耳. 这个时间点电话响了肯定没好事,因为我的手机在夜间模式下,除非被同一个电话号码打三次,否则是静音,因此电话那边的人肯定有急事找我 ...

  5. Thinkphp5.1 导入第三方包的问题

    一般刚接触tp5.1的,会很不适应,虽然版本号只是比5.0多了0.1,但是差别挺大,废弃了不少方法,官方的教程又很简单,很多东西没说全,在此鄙视一下框架作者,最起码体谅一下小白嘛,搞了好多天才把5.1 ...

  6. 微信小程序——事件冒泡

    在微信小程序的事件分为冒泡事件和非冒泡事件: 冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递. 非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递. WXML的冒泡事件列表: ...

  7. 【nodejs原理&源码赏析(7)】【译】Node.js中的事件循环,定时器和process.nextTick

    目录 Event Loop 是什么? Event Loop 基本解释 事件循环阶段概览 事件循环细节 timers pending callbacks poll阶段 check close callb ...

  8. 索引很难么?带你从头到尾捋一遍MySQL索引结构,不信你学不会!

    前言 Hello我又来了,快年底了,作为一个有抱负的码农,我想给自己攒一个年终总结.自上上篇写了手动搭建Redis集群和MySQL主从同步(非Docker)和上篇写了动手实现MySQL读写分离and故 ...

  9. Preact(React)核心原理详解

    原创: 宝丁 玄说前端 本文作者:字节跳动 - 宝丁 一.Preact 是什么 二.Preact 和 React 的区别有哪些? 三.Preact 是怎么工作的 四.结合实际组件了解整体渲染流程 五. ...

  10. IOS UISwitch 控件

    转自:http://my.oschina.net/wolx/blog/396680 一 UISwitch 简介 二 UISwitch 创建 三设置选中状态 四 添加监听 五 测试代码 5.1 代码 5 ...