• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

javascript - 与 Native Mobile(iOS 或 Android)进行 React 组件通信

[复制链接]
菜鸟教程小白 发表于 2022-12-13 05:28:39 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我知道这可能不是最好的设计方法。我被迫遵守现有的架构。

给定以下一组 React 组件。如何完成以下 senerio。

ReactComponentInstance <-Communication-> Native iOS or Android

概述:

  1. 负责管理图像的通用 React 组件。

  2. 单击此图像后,React 组件会调用 Native Application 以调用带有数据的 View 。 (我已经有办法管理这部分了)。

  3. native 代码对数据进行一些处理。(此逻辑无关紧要。

  4. 我遇到的挑战。如何回调调用 native 代码的 React 组件的同一实例。

Webapp 和 Native 应用程序之间的通信是通过 javascript 桥接器处理的。

var ImageClass = React.createClass({
  getInitialState: function (){
    return {
      imgURL:"http://i0.wp.com/www.compusurf.es/wordpress/wp-content/uploads/2014/04/smiley.jpeg?fit=1200%2C1200"
    }
  },
  didCompleteMobileProcessing: function (data){
    //This function should only be invoked on the specific instance which invoked the native code. 
    //Invoked when the Mobile native code is done processing image.
    //Populate image with new data form native app. 
    //this.setState(data);  
  },
  handleClick: function (e){
    e.preventDefault();
    console.log("Image Clicked");
    //Load mobile Native View. Sending it the image and allow it to process data
    //LoadNativeView(this.state.imgURL);
  },
  render: function (){
    return(
      <span className="ImageContainer">
        <img onClick={this.handleClick} src={this.state.imgURL} alt="ImageBox" align="center"/>
      </span> 
    ); 
  }
});


var App = React.createClass({
  render: function() {
    return(
      <div className="container">
        <ImageClass/> //Instance 1
        <ImageClass/> //Instance 2
        <ImageClass/> //Instance 3
        <ImageClass/> //Instance 4
        <ImageClass/> //Instance 5
      </div>
    );      
  }
});



Best Answer-推荐答案


您可以使用命令在 native 和 react native 之间进行通信。

在 ViewGroupManager 中使用这两种方法

getCommandsMap()
receiveCommand()

这里有详细的explaination

关于javascript - 与 Native Mobile(iOS 或 Android)进行 React 组件通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28698714/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap