You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android React Native原生模块中暴露属性?

在React Native Android原生模块中暴露属性的实现方案

当然可以实现!React Native的Android原生模块不仅能暴露标注@ReactMethod的方法,也能通过合适的方式暴露属性。根据你的需求(固定字符串属性),最便捷的方案是重写getConstants()方法来提供常量属性,下面是具体的实现步骤:

1. 修改Android原生模块代码

在你的MyNativeModule类中,重写getConstants()方法,将需要暴露的属性放入返回的Map集合中:

import android.util.Log
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactContextBaseJavaModule
import com.facebook.react.bridge.ReactMethod
import java.util.HashMap

class MyNativeModule(reactAppContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactAppContext) {
    override fun getName(): String = "MyNativeModule"

    @ReactMethod
    fun nativeModule() {
        Log.d("MyNativeModule", "Native module method")
    }

    // 你想要暴露的属性
    private val nativeModuleProperty = "I am a native property"

    override fun getConstants(): Map<String, Any> {
        val constants = HashMap<String, Any>()
        // 将属性添加到常量集合中,键名要和JS端期望的属性名一致
        constants["nativeModuleProperty"] = nativeModuleProperty
        return constants
    }
}

2. JS端使用方式

修改完成后,你就可以完全按照自己期望的方式直接访问这个属性了:

import { NativeModules } from 'react-native';

export const { nativeModule, nativeModuleProperty } = NativeModules.MyNativeModule;

nativeModule(); // 会打印"Native module method"
console.log(nativeModuleProperty); // 会打印"I am a native property"

补充:动态属性的处理方案

如果你的属性是动态变化的(比如运行时会修改值),getConstants()就不适用了——因为它只在模块初始化时读取一次属性值。这种情况下可以通过暴露一个getter方法来实时获取属性值:

Android端代码

import com.facebook.react.bridge.Promise

// ... 其他代码保持不变

@ReactMethod
fun getNativeModuleProperty(promise: Promise) {
    // 这里可以返回实时更新后的属性值
    promise.resolve(nativeModuleProperty)
}

JS端调用

NativeModules.MyNativeModule.getNativeModuleProperty().then(value => {
    console.log("当前属性值:", value);
});

注意事项

  • getConstants()返回的属性必须是React Native支持序列化的类型:字符串、数字、布尔值、数组、普通对象等,不能是自定义的复杂类型。
  • 属性名要保证Android端和JS端的命名完全一致,RN中属性名是区分大小写的。

内容的提问来源于stack exchange,提问作者Tomasz Czura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:25:38