当前位置 博文首页 > 文章内容

    react-native-webview 组件中RN与web的通信 (我用它来写移动端的简易富文本编辑器——文字和图片的插入)

    作者: 栏目:未分类 时间:2020-07-19 16:00:34

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    1. react-native-webview文档的地址先放在这

    https://github.com/react-native-community/react-native-webview/blob/master/docs/Guide.md

    文档指南里面,介绍了基本RN与Web通信的基本用法,我下面总结和补充一些,关于RN 与 Web 通过 postMessage 和 onMessage 方法通信的写法

     

    2. RN 与 Web 通过 postMessage 和 onMessage 方法通信的写法

    web端 --> RN,web端发送时写法

     1 //web端发送信息 ,数据只能为字符串类型,
     2 window.ReactNativeWebView.postMessage("Hello!");
     3  
     4 
     5 // 如果想传递数组类型,应该先用JSON将其序列化,代码如下
     6   let book = [
     7          {
     8             title:'zhangsan',
     9             age:12
    10          }
    11     ];
    12 let bookText = JSON.stringify(book); 
    13 
    14 //postMessage方法发送字符串数据
    15 window.ReactNativeWebView.postMessage(bookText);

     

    web端 --> RN,RN端接受数据的写法

     1 <WebView            
     2           onMessage={(event) => {
     3              console.log(event);
     4 
     5              //这里数据确实包裹在 nativeEvent对象里面的data属性
     6              console.log(event.nativeEvent);
     7 
     8              // 如果传过来的是JSON序列化的字符串,要转回来
     9              console.log( JSON.parse(event.nativeEvent.data) );
    10          }}    
    11 />

     

     

     

     

     RN--> Web端 ,RN端发送数据

    1  // RN向Web传递数据,类型依旧只有字符串 或 JSON序列化的东西              
    2  this.webref.postMessage('1234');

     

    RN-->web端 ,Web端接收数据

    1 window.onload = function(){    
    2        document.addEventListener("message", function(e) {
    3                 // e 指的的是MessageEvent对象
    4                 alert(e); 
    5 
    6                // 通过可以直接拿到字符串类型数据
    7                 alert(e.data);               
    8        });
    9 }