IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> H5调用React Native -> 正文阅读

[移动开发]H5调用React Native

作者:treeSkill

H5代码如下:

<!DOCTYPE html>
<html lang="zh">
<head>
? ? <meta charset="UTF-8">
? ? <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
? ? <meta name="renderer" content="webkit">
? ? <meta http-equiv="Cache-Control" content="no-siteapp">
? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">
? ? <link rel="stylesheet" href="./build/calendar.css">
? ? <style>
? ? ? ? .btn{
? ? ? ? ? ? background: #f00;color:#fff
? ? ? ? }
? ? </style>
</head>
<body style="background:#ddd;">
<div style="text-align: center">
? ? <button id="button" onclick="send()">发送数据到react native</button>
? ? <p style="text-align: center">收到react native发送的数据: <span id="data"></span></p>
</div>
</body>
<script>
? ? var data = 0;
? ? function send () {
? ? ? ? data += 100;
? ? ? ? //window.ReactNativeWebView.postMessage("Hello React");

? ? ? ? window.postMessage("Hello React");
? ? }
? ? window.onload = function () {
? ? ? ? alert(111);
? ? }
</script>
</html>

RN代码如下:

import React, { Component } from 'react';
import {
  WebView,
  NativeModules,
  AppRegistry,
  Dimensions,
  View,
  Image,
  Text,
} from 'react-native';
import NavigationBar from '../../component/NavBarComponent';
import BehaviorUtils from '../../util/BehaviorUtil';
import publicStyle from '../../util/publicStyle';

var screenWidth = Dimensions.get('window').width;
var screenHeight = Dimensions.get('window').height;
var nativeModule = NativeModules.OpenHomeModule;
var publicModule = NativeModules.PublicModule;

/**
* desc:H5页面
* author:jiaqch@neusoft.com
* date:2019-09-03
*/
export default class Pageh5 extends Component<Props>{

  constructor(props){
    super(props);
    this.state = {
      hasNet:true,
    }
  }

  //返回首页
  openHomePage(){
      let backFlag = this.props.backFlag;
      if(backFlag && backFlag=='1'){
        this.back();
      }else{
        nativeModule.openHomePage();
      }
  }

  //返回
  back(){
      const{navigator} = this.props;
      if(navigator){
        navigator.pop();
      }
  }

  componentDidMount() {
      let secServiceCode = this.props.userInfo[0].secServiceCode;
      //二级服务代码不空的情况下跟踪
      if(secServiceCode && secServiceCode!=""){
        let userId = this.props.userInfo[0].userId;
        let cityCode = this.props.userInfo[0].cityCode;
        let phoneNumber = this.props.userInfo[0].phoneNumber;
        let deviceId = this.props.userInfo[0].deviceId;
        let ipAddress = this.props.userInfo[0].ipAddress;
        BehaviorUtils.sendBmgjData(userId,secServiceCode,"1","点击",cityCode,phoneNumber,deviceId,ipAddress);
      }
  }

   onMessage(e){
      console.log('serviceShare:...');
      publicModule.serviceShare(e.nativeEvent.data);
   }




  render() {
    return (
    <View style={{flex: 1,backgroundColor:'#fff'}}>
      <NavigationBar title={this.props.userInfo[0].secServiceName}
                leftAction={()=>{this.openHomePage()}}>
              </NavigationBar>
      <View style={{flex: 1}}>
          {
            this.state.hasNet?
            <WebView
              ref='webview'
              useWebKit={true}
              startInLoadingState={true}
              domStorageEnabled={true}//开启dom存贮
              javaScriptEnabled={true}//开启js
              scalesPageToFit={true}
              geolocationEnabled={true}
              mixedContentMode={'always'}
              source={{uri:this.props.userInfo[0].serviceUrl}}
              onError={()=>{this.setState({hasNet:false})}}
              onMessage={this.onMessage.bind(this)}
            />:
            <View style={{height:screenHeight-100,justifyContent:'center',alignItems:'center'}}>
              <Image source={require('../../image/gjcx/nowifi.png')} style={{width:181,height:164}}/>
              <Text style={[publicStyle.font14_GrayR,{marginTop:10}]}>网络请求失败</Text>
              <Text style={[publicStyle.font14_GrayR,{marginTop:5}]}>请检查你的网络</Text>
            </View>
          }
      </View>
    </View>
    );
  }
}

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-11-15 15:59:21  更:2021-11-15 16:00:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:51:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码