"undefined не является функцией" при создании собственного модуля Android в ReactNative

Я следую ReactNative Native Module Guide, чтобы написать класс Java, который можно использовать на стороне JS. Экспортируемый метод show из класса ToastModule(экспортируется как ToastAndroid). show Метод ниже:

public void show(String message, int duration) {
    Toast.makeText(getReactApplicationContext(), message, duration).show();
}

Вся работа, как и ожидалось, с кнопкой тоста появляется, когда я вызываю ToastAndroid.show из обработчика Button onPress.

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  Button,
  NativeModules,
} from 'react-native';

const ToastAndroid = NativeModules.ToastAndroid

export default class App extends Component {

handleBTNPressed(){
  ToastAndroid.show('Awesome', ToastAndroid.SHORT);
}
render() {
  return (
    <View style={styles.container}>
      <Text style={styles.welcome}>
        Welcome to React Native!!
      </Text>
      <Button title='click me' onPress={()=>this.handleBTNPressed()}/>
    </View>
  );
 }
}

Тем не менее, когда я в дальнейшем изменить имя функции с

@ReactMethod
public void show(String message, int duration) {
    Toast.makeText(getReactApplicationContext(), message, duration).show();
}

в

@ReactMethod
public void showAgain(String message, int duration) {
    Toast.makeText(getReactApplicationContext(), message, duration).show();
}

Я сталкиваюсь со следующей ошибкой:"undefined не является функцией"

эта ошибка снова появляется, если я добавляю новый экспортированный метод следующим образом:

@ReactMethod
public void showAgain2(String message, int duration) {
    String mes = "Hi " + message;
    Toast.makeText(getReactApplicationContext(), message, duration).show();
}

Кто-нибудь знает, какой шаг я делаю неправильно?

EDIT ==========================

Там уже может быть ToastAndroid в ReactNative, поэтому я меняю имя на MyToastExample, Однако теперь ошибка стала следующей

Кто-нибудь сталкивался с такой же проблемой?

1 ответ

На этом этапе проверьте, есть ли у вас право на импорт ToastModule, потому что ReactNative также имеет класс Called ToastModule,

Проверьте, если эта строка import com.facebook.react.modules.toast.ToastModule; существуют в *ReactPackage.java

Попробуйте использовать import вместо require,

В моей ситуации я использовал:

var Contacts = require( "react-native-unified-contacts" );

и я получал undefined is not function ошибка.

Однако меняется на:

import Contacts from "react-native-unified-contacts"; 

исправил проблему для меня.

очевидно require а также import относиться к модулям по-разному.

Другие вопросы по тегам