"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
относиться к модулям по-разному.