当前位置: 首页 > article >正文

鸿蒙HarmonyOS (React Native)的实战教程

一、环境配置

  1. 安装鸿蒙专属模板

    bashCopy Code

    npx react-native@0.72.5 init HarmonyApp --template react-native-template-harmony:ml-citation{ref="4,6" data="citationList"}

  2. 配置 ArkTS 模块路径
    在 entry/src/main/ets 目录下创建原生模块(下文示例)


二、实战:RN 调用鸿蒙传感器(ArkTS 原生模块)

1. 创建鸿蒙原生模块 SensorManager.ets

typescriptCopy Code

// entry/src/main/ets/sensors/SensorManager.ets import sensor from '@ohos.sensor'; export class SensorManager { // 暴露给 RN 的加速度计监听方法 static startAccelerometer(callback: (data: object) => void): void { sensor.on(sensor.SensorId.ACCELEROMETER, (data) => { callback({ x: data.x, y: data.y, z: data.z }); }); } }

2. RN 侧调用传感器(JS 代码)

javascriptCopy Code

// App.js import { NativeModules } from 'react-native'; const { SensorManager } = NativeModules; // 启动加速度监听 useEffect(() => { SensorManager.startAccelerometer(data => { console.log("加速度数据:", data.x, data.y, data.z); }); }, []);

3. 权限声明(关键步骤)

在 module.json5 中添加:

jsonCopy Code

{ "module": { "requestPermissions": [ { "name": "ohos.permission.ACCELEROMETER" } ] } }

‌:传感器需真机测试,模拟器无数据返回


三、鸿蒙 UI 组件封装(ArkTS + RN)

1. 创建鸿蒙原生组件 HarmonyButton.ets

typescriptCopy Code

// entry/src/main/ets/components/HarmonyButton.ets @Component export struct HarmonyButton { @State label: string = "Click Me" onClick: () => void = () => {} build() { Button(this.label) .width(150) .height(50) .onClick(() => this.onClick()) } }

2. 桥接到 React Native

javascriptCopy Code

// harmony-bridge.js import { requireNativeComponent } from 'react-native'; export default requireNativeComponent('HarmonyButton');

3. RN 中使用该组件

jsxCopy Code

// App.js import HarmonyButton from './harmony-bridge'; <HarmonyButton label="鸿蒙按钮" style={{ width: 150, height: 50 }} onClick={() => alert('ArkTS 按钮被点击!')} />


四、调试技巧

  1. 日志查看
  2. bashCopy Code

  3. hdc shell hilog | grep "ReactNativeJS" # 过滤 RN 日志

  4. 性能分析
    • 使用 DevEco Profiler 监控 JS 线程负载(优化后渲染延迟降低 40%)

五、避坑指南

问题解决方案
RN 无法加载鸿蒙组件检查 harmony/components 路径无中文命名
传感器返回 null真机需开启开发者模式的「传感器调试权限」
热更新失效关闭 DevEco Studio 的 ArkCompiler 优化模式
http://www.lryc.cn/news/2396181.html

相关文章:

  • 函数栈帧深度解析:从寄存器操作看函数调用机制
  • 【计算机网络】第3章:传输层—可靠数据传输的原理
  • rv1126b sdk移植
  • 第6节 Node.js 回调函数
  • OpenCV CUDA模块直方图计算------在 GPU上执行直方图均衡化(Histogram Equalization)函数equalizeHist
  • 构建系统maven
  • day13 leetcode-hot100-23(链表2)
  • Java面试八股(Java基础,Spring,SpringBoot篇)
  • Python编程基础(二)| 列表简介
  • 支持向量机(SVM):解锁数据分类与回归的强大工具
  • 代谢组数据分析(二十五):代谢组与蛋白质组数据分析的异同
  • 002 flutter基础 初始文件讲解(1)
  • AI 让无人机跟踪更精准——从视觉感知到智能预测
  • Launcher3体系化之路
  • 用wireshark抓了个TCP通讯的包
  • VR/AR 显示瓶颈将破!铁电液晶技术迎来关键突破
  • 【前端】Vue中实现pdf逐页转图片,图片再逐张提取文字
  • 焦虑而烦躁的上午
  • Python使用
  • 分类预测 | Matlab实现CNN-LSTM-Attention高光谱数据分类
  • 【解决方案-RAGFlow】RAGFlow显示Task is queued、 Microsoft Visual C++ 14.0 or greater is required.
  • 爬虫到智能数据分析:Bright Data × Kimi 智能洞察亚马逊电商产品销售潜力
  • 高级前端工程师必备的 JS 设计模式入门教程,常用设计模式案例分享
  • unix/linux source 命令,其发展历程详细时间线、由来、历史背景
  • 2023年电赛C题——电感电容测量装置
  • pycharm打印时不换行,方便对比观察
  • 因泰立科技:镭眸T51激光雷达,打造智能门控新生态
  • Microsoft Fabric - 尝试一下Data Factory一些新的特性(2025年5月)
  • NodeJS全栈开发面试题讲解——P10微服务架构(Node.js + 多服务协作)
  • 【前端】javascript和Vue面试八股