Передача строки из нативного модуля для реакции на нативный - PullRequest
1 голос
/ 05 июля 2019

Я создаю нативный модуль для Android (на языке котлин)

class TestModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) {
    override fun getName(): String {
        return "TestModule"
    }

    @ReactMethod
    fun testing(): String{
        return "my modules"
    }

}

Затем я зарегистрировал этот модуль в пакетах ModulesPackages и добавил его в MainApplication.tk, как указано в https://facebook.github.io/react-native/docs/native-modules-android.html

в 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>

    );
  }
}

После запуска я ожидаю получить предупреждение с текстом «мои модули», но я получил предупреждение с текстом «undefined»

Я не могу понять, что я сделал не так. Я не вижу никаких ошибок или жалоб при запуске реакции-нативного запуска-android.

Есть предложения, что я сделал не так?

1 Ответ

0 голосов
/ 05 июля 2019

Чтобы установить связь между собственным модулем и модулем js, вы должны вызвать callback, обещание или использовать событие.В вашем случае функция testing может быть изменена следующим образом:

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...