React Native 中如何与原生代码交互?

推荐答案

在 React Native 中,与原生代码交互主要通过以下几种方式实现:

  1. Native Modules:通过创建原生模块,将原生代码暴露给 JavaScript 调用。
  2. Native UI Components:通过创建原生 UI 组件,将原生视图嵌入到 React Native 应用中。
  3. Event Emitters:通过事件发射器,从原生代码向 JavaScript 发送事件。

Native Modules

Native Modules 允许你在 JavaScript 中调用原生代码。你可以通过以下步骤创建一个 Native Module:

  1. 在原生代码中创建一个类,并实现 RCTBridgeModule 协议(iOS)或继承 ReactContextBaseJavaModule(Android)。
  2. 使用 RCT_EXPORT_MODULE() 宏(iOS)或 @ReactModule 注解(Android)将模块暴露给 JavaScript。
  3. 使用 RCT_EXPORT_METHOD() 宏(iOS)或 @ReactMethod 注解(Android)将方法暴露给 JavaScript。

Native UI Components

Native UI Components 允许你在 React Native 中使用原生视图。你可以通过以下步骤创建一个 Native UI Component:

  1. 在原生代码中创建一个视图类,并实现 RCTViewManager 协议(iOS)或继承 SimpleViewManager(Android)。
  2. 使用 RCT_EXPORT_MODULE() 宏(iOS)或 @ReactModule 注解(Android)将视图管理器暴露给 JavaScript。
  3. 在 JavaScript 中使用 requireNativeComponent 函数来引用原生组件。

Event Emitters

Event Emitters 允许你从原生代码向 JavaScript 发送事件。你可以通过以下步骤实现事件发射:

  1. 在原生代码中创建一个类,并实现 RCTEventEmitter 协议(iOS)或继承 ReactContextBaseJavaModule 并实现 getSupportedEvents 方法(Android)。
  2. 使用 sendEventWithName 方法(iOS)或 emit 方法(Android)发送事件。
  3. 在 JavaScript 中使用 NativeEventEmitter 类来监听事件。

本题详细解读

Native Modules 详细步骤

iOS

  1. 创建原生模块

    -- -------------------- ---- -------
    ------- -------------------------
    
    ---------- -------------- - -------- -----------------
    ----
    
    --------------- --------------
    
    --------------------
    
    ------------------------------------ ------- -
      -------------- ---- ------
    -
    
    ----
  2. 在 JavaScript 中调用

Android

  1. 创建原生模块

    -- -------------------- ---- -------
    ------- ----------
    
    ------ --------------------------------------------------
    ------ -----------------------------------------------------
    ------ --------------------------------------
    
    ------ ----- -------------- ------- -------------------------- -
      ------ -------------------------------------- ------------- -
        --------------------
      -
    
      ---------
      ------ ------ --------- -
        ------ -----------------
      -
    
      ------------
      ------ ---- --------------- ----- -
        -------------------------- - - ------
      -
    -
  2. 在 JavaScript 中调用

Native UI Components 详细步骤

iOS

  1. 创建原生视图

    -- -------------------- ---- -------
    ------- ------------------------
    
    ---------- ------------------- - --------------
    ----
    
    --------------- -------------------
    
    -------------------
    
    - ------- ------ -
      ------ -------- ------ ------
    -
    
    ----
  2. 在 JavaScript 中使用

Android

  1. 创建原生视图

    -- -------------------- ---- -------
    ------- ----------
    
    ------ ------------------
    ------ -----------------------------------------------
    ------ ------------------------------------------------
    
    ------ ----- ------------------- ------- ----------------------- -
      ---------
      ------ ------ --------- -
        ------ ---------------
      -
    
      ---------
      --------- ---- ------------------------------------- ------------- -
        ------ --- -------------------
      -
    -
  2. 在 JavaScript 中使用

Event Emitters 详细步骤

iOS

  1. 创建事件发射器

    -- -------------------- ---- -------
    ------- -------------------------
    ------- -------------------------
    
    ---------- -------------- - --------------- -----------------
    ----
    
    --------------- --------------
    
    --------------------
    
    - ----------------- -- ----------------- -
      ------ --------------
    -
    
    - --------------- -
      ----- ---------------------------- ------------------ ------- ---- ----------
    -
    
    ----
  2. 在 JavaScript 中监听事件

Android

  1. 创建事件发射器

    -- -------------------- ---- -------
    ------- ----------
    
    ------ --------------------------------------------------
    ------ -----------------------------------------------------
    ------ --------------------------------------
    ------ ---------------------------------------------------------
    ------ --------------------------------------
    ------ ------------------------------------
    
    ------ ----- -------------- ------- -------------------------- -
      ------ -------------------------------------- ------------- -
        --------------------
      -
    
      ---------
      ------ ------ --------- -
        ------ -----------------
      -
    
      ------------
      ------ ---- ----------- -
        ----------- ------ - ----------------------
        --------------------------- ------ ---- ---------
        ----------------------------
          ------------------------------------------------------------------
          ---------------- --------
      -
    -
  2. 在 JavaScript 中监听事件

纠错
反馈