在Android Native项目中使用React Native类



我有一个中等规模的Android和iOS应用,目前分别使用Android Native (Java)和iOS Native (Swift)开发。我正在接近React Native,以便使用它在两个应用程序之间共享一些代码,因为我负担不起在React Native中一次重制整个项目。

计划从一些类开始:一个访问所有端点的管理器,一些管理器,一些数据类型。我现在不想共享视图,因为他们使用那些共享代码,我必须在三个项目中维护那些管理器。

是否有一种方法可以访问React Native类,即不是视图(Android Activities/iOS ViewControllers),到Android Native?

我尝试https://reactnative.dev/docs/integration-with-existing-apps,它的工作原理,但这看起来像一个美化的WebView,在React Native的代码是模糊的。如果在React Native代码中,我有一些普通的类,例如:

import React from 'react';
import type {Node} from 'react';

class Adder {
add = (value) => {
return value + 10;
}
}

export default Adder;

有任何方法我可以调用在Java这个代码?:

int value = new Adder().add(1); // Value == 11

我用错误的工具来解决这个问题吗?

经过一些扩展(iOS)和活动(Android)的经验,我认为你的意图并不真正适合React Native。React Native总是基于屏幕,iOS中的ViewController和Android中的Activity。React Native的整个生命周期都在这个屏幕中,RN负责显示内容。当您在一个RN屏幕中时,您可以使用模块的所有本机功能,并从本机端调用RN。从本机到RN的调用中获取返回值已经很复杂了(反之亦然),所以您集成它的方式可能会使您很难,即使您绕过了显示屏幕的所有逻辑。

有了这个想法,你可以很容易地在你的应用程序中的单一屏幕与(新的)RN屏幕交换。你通过startActivity (Android)或presentViewController等(iOS)调用它们,并将所有相应的逻辑放在RN中,可能与一些旧的本地代码进行交互。