React native 将字符串从本机模块传递到本机模块

React native 将字符串从本机模块传递到本机模块,react-native,react-native-android,React Native,React Native Android,我为android创建了一个本机模块(用kotlin语言) 然后,我在ModulesPackages中注册了该模块,并按照中的说明将其添加到MainApplication.tk 在App.js中 import {NativeModules} from 'react-native' const TestingModule = NativeModules.TestModule; type Props = {}; export default class App extends Component&l

我为android创建了一个本机模块(用kotlin语言)

然后,我在ModulesPackages中注册了该模块,并按照中的说明将其添加到MainApplication.tk

在App.js中

import {NativeModules} from 'react-native'
const TestingModule = NativeModules.TestModule;
type Props = {};
export default class App extends Component<Props> {
  render() {

    alert(TestingModule.testing());

    return (
      <View style={styles.container}>
        <Text style={styles.instructions}> test</Text>
      </View>

    );
  }
}
从'react native'导入{NativeModules}
const TestingModule=NativeModules.TestModule;
类型Props={};
导出默认类应用程序扩展组件{
render(){
警报(TestingModule.testing());
返回(
测试
);
}
}
运行此命令后,我希望得到文本为“my modules”的警报,但我得到文本为“undefined”的警报

我不知道我做错了什么。当我运行react native运行android时,我没有看到任何错误或抱怨


任何关于我做错了什么的建议?

要在本机模块和js模块之间进行通信,您应该调用回调、承诺或使用事件。在您的情况下,
测试
功能可以更改如下

import com.facebook.react.bridge.Callback;

...

@ReactMethod
fun testing(callback: Callback): Void{
    callback.invoke("my modules")
}
编辑

在这种情况下,您应该在js文件中传递回调:

testCallback = (name) => {
    console.log(name);
}

componentDidMount() {
    TestingModule.testing(this.testCallback);
}

它似乎不起作用。在不更改app.js的情况下,我得到了错误“…得到了0个参数,预期为1”。如果我放置了一个变量,因此我发出了警报(TestingModule.testing(testing)),我得到了错误“模块AppState中存在回调getCurrentAppState(),但本机模块中的函数只能注册一个回调”。调用@Denvi时,您必须将函数传递给该本机模块,我已对我的应答进行了编辑谢谢,这适用于控制台。但是,我是否可以分配回调,将“TestModule”字符串命名为要在UI上显示的变量?无论我做什么,我都可以在控制台上获得该值,但我不知道如何将其分配给变量以在UI上显示
testCallback = (name) => {
    console.log(name);
}

componentDidMount() {
    TestingModule.testing(this.testCallback);
}