React Native 桥接原生实现 JS 调用原生方法

news2024/11/19 17:33:35

一、为什么需要桥接原生

为了满足在React 层无法实现的需求

  • 复杂高性能的组件:复杂表格、视频播放
  • 原生层开发能力:传感器编程、widget
  • 平台属性:系统信息、设备信息
  • 对接第三方应用:相机、相册、地图

真实的开发过程中是不可能完全使用JS就能实现所有功能,不可避免的会去使用到原生提供的能力,所以就需要去桥接原生。

二、桥接原生方法

1、编写并注册原生方法

在这里插入图片描述
在 MainAppLication 中有一个 ReactNativeHost 对象,其中有一个 getPackages 方法返回的就是自定义 packages。

第一步:自定义属于自己的 package

在这里插入图片描述
首先自定义一个类 SmallDaysPackage 继承自类 ReactPackage 并重写覆盖它的两个方法

  • creatNativeModuls 主要用于桥接原生的方法
  • createViewManagers 主要用于桥接原生的组件

在这里插入图片描述
第二步:原生模块 SmallDaysAppModule 的编写

再新建一个类模块 SmallDaysAppModule ,在这个模块中有一个 getName 方法返回这个模块的名字,在 RN 中就可通过导出的一个同名的变量访问到该模块中的方法

在这里插入图片描述

将自定义的 smallDaysModule 添加到 modules 中就完成了原生模块的注册

在这里插入图片描述

将自定义的 SmallDaysPackage 添加到 packages 中就完成了该模块的注册

在这里插入图片描述
上述工作完成后,剩下的就是在 SmallDaysAppModule 中编写原生方法。

第三步:在 SmallDaysAppModule 中编写方法,实现跳转相册功能和获取版本

  • 跳转相册不需要返回值,是一种没有返回值的函数调用
  • 获取版本需要返回版本号,是带返回值的函数调用,它通过Promise 对象的 resolve 和 reject 方法来处理成功和异常的回调。
    在这里插入图片描述

二、在 JS 层调用原生方法

导入 NativeModules

在这里插入图片描述

在 NativeModules 中取出自定义的原生模块 SmallDaysApp

在这里插入图片描述

SmallDaysApp 就是在原生模块 SmallDaysAppModule 中 getName 方法返回的名字

在这里插入图片描述

效果

请添加图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1371254.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenGL学习笔记-Blending

混合方程中,Csource是片段着色器输出的颜色向量(the color output of the fragment shader),其权重为Fsource。Cdestination是当前存储在color buffer中的颜色向量(the color vector that is currently stored in the …

欢乐的周末 - 华为OD统一考试

OD统一考试 题解: Java / Python / C 题目描述 小华和小为是很要好的朋友,他们约定周末一起吃饭。 通过手机交流,他们在地图上选择了多个聚餐地点(由于自然地形等原因,部分聚餐地点不可达)。求小华和小为都能到达的聚餐地点有多…

私域爆款活动实操指南,让你轻松成为营销高手!

私域运营活动是公司运营中非常重要的一环,它能够提高用户参与度、增加用户忠诚度,并为公司带来更多的商业机会。然而,策划和执行一场成功的私域运营活动并不容易,需要思维缜密、部门合作以及落地能力等方面的综合素养。今天来跟大…

Orchestrator源码解读2-故障失败发现

目录 前言 核心流程函数调用路径 GetReplicationAnalysis 故障类型和对应的处理函数 ​编辑 拓扑结构警告类型 核心流程总结 与MHA相比 前言 Orchestrator另外一个重要的功能是监控集群,发现故障。根据从复制拓扑本身获得的信息,它可以识别各种故…

JDK21和 Flowable 7.0.0

JDK21和 Flowable 7.0.0 一.Flowable二.项目搭建1.依赖包2.数据库3.资源文件1.YML配置文件2.Drools kbase3.Drools rule4.DMN 决策表5.BPMN 流文件 4.BPMN 流程图绘制插件5.测试代码1.启动类2.Flowable 配置3.Camel 配置1.Camel 配置2.Camel Router 定义 4.扩展类监听1.外部工作…

【MySQL】视图,15道常见面试题---含考核思路详细讲解

目录 一 视图 1.1视图是什么 1.2 创建视图 1.3 查看视图(两种) 1.4 修改视图(两种) 1.5 删除视图 二 外连接&内连接&子查询介绍 2.1 外连接 2.2 内连接 2.3 子查询 三 外连接&内连接&子查询案例 3.1 了解表结构与数据 3.2 15道常见面试题 四 思…

Java中内存模型

参数传递图解与结论 通过上面的两段程序可以得出如下结论:根据内存去解释,局部变量随方法栈的弹出而消失; 当调用方法时,如果传入的数值为基本数据类型(包含String类型),形式参数的改变对实际…

虚拟机Ubuntu网络配置

电脑有两个系统,windows系统和ubuntu系统,那网卡到底给哪一个用呢,所以要选择桥接模式,就可以共用网卡 但是我们电脑网卡,有线网卡,无线网卡,到底使用哪个网卡,所以选择桥接到自动或…

IP地址的网络安全防护和预防

网络安全对于保护个人和组织的信息资产至关重要,而IP地址是网络通信的基础。在这篇文章中,IP数据云将探讨IP地址的网络安全防护和预防措施,以确保网络的安全性和可靠性。 IP地址是互联网上每个设备在网络中的唯一标识符。有IPv4和IPv6两种类…

苹果手机怎么设置提醒事项?详细方法在这,记得收藏!

无论是学生党还是上班族,大家每天都需要处理许多任务和事项。为了更好地管理这些事项,苹果手机为用户提供了提醒功能。 通过设置提醒事项,我们可以减少忘记重要任务的可能性。那么,苹果手机怎么设置提醒事项呢?在本文…

阳光宝宝的视界:新生儿补充叶黄素的小心指南

引言: 叶黄素,作为视觉健康的重要组成部分,对新生儿的眼睛发育和视觉保护具有重要意义。本文将深入探讨叶黄素的功能、补充时机,以及在给新生儿补充叶黄素时应该注意的事项,为小天使们提供最贴心的呵护。 第一部分&am…

【SQL】对表中的记录通过时间维度分组,统计出每组的记录条数

场景:一般用作数据统计,比如统计一个淘宝用户在年、月、日的维度上的订单数。 业务:一个集合,以时间维度来进行分组求和。 准备一张订单表order,有一些常规属性,比如创建时间,订单号。 DDL语句如…

Vue面试之虚拟DOM

Vue面试之虚拟DOM 什么是虚拟dom?虚拟dom是如何产生的?编写模板template模板编译Complie挂载Mounting 如何进行新旧Dom对比? 最近在整理一些前端面试中经常被问到的问题,分为vue相关、react相关、js相关、react相关等等专题&#…

【C语言】指针——从底层原理到应用

C语言指针-从底层原理到花式技巧,用图文和代码帮你讲解透彻 目录 一、前言二、变量与指针的本质 1. 内存地址2. 32位与64位系统3. 变量4. 指针变量5. 操作指针变量 5.1 指针变量自身的值5.2 获取指针变量所指向的数据5.3 以什么样的数据类型来使用/解释指针变量所指…

【研究僧毕业总结】第1024个创作日

目录 前言1. 机缘2. 收获3. 憧憬 前言 收到这封来信,代表从创作至今刚好满足1024天 1024,程序员的记忆 1. 机缘 从学生到社会,都在需求一个记录笔记的软件,而作为程序员,CSDN可云同步又可直接在云平台上看到 选择了…

【算法分析与设计】三数之和

题目 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例…

ERD助力研发资产沉淀研发提效

一、从痛点中思考答案 痛点一:复杂系统的设计和逻辑碎片化散落,缺少沉淀导致系统后期维护、迭代以及架构升级都非常困难。 痛点二:由于新需求或新项目导致的系统的老旧逻辑梳理往往耗费大量人力,甚至造成人才的流失。 痛点三&a…

华为云AI:轻松实现图像识别调用

文章目录 前言一、环境配置关键步骤 二、图像识别实例媒资图像标签名人识别 总结 前言 基于华为云AI服务和java使用SDK实现图像识别,主要以媒资图像标签和名人识别为例。 一、环境配置 Maven(没有直接下载华为的SDK包,而是使用Maven安装依赖…

CPT203-Software Engineering 笔记

Week 1 -- Introduction failure reason professional software development*** maintain, security, efficiency, acceptability two kinds***: generic, customized software deterioration 软件退化 reduce changes/ side effects after changes software engineering …

Python豆瓣爬虫详解

有没有过周末为看什么电影焦虑,今天手把手教学爬取豆瓣电影评分! 0,当我们打开一个网站的时候这个时候网站给到我们一个cookies,这个cokkies可能是多个参数或一个参数,然后我们再浏览其他的页面的时候网站会校验cooki…