我跟随ReactNative Native Module Guide编写了可以在JS端使用的java类。导出的方法是show
类ToastModule
(导出为ToastAndroid
)。 show
方法如下:
public void show(String message, int duration) {
Toast.makeText(getReactApplicationContext(), message, duration).show();
}
当我从Button onPress处理程序调用ToastAndroid.show时,所有按预期的工作都会出现。
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();
}
我遇到以下错误:&#34; undefined不是函数&#34;
如果我添加新的导出方法,则会再次显示此错误:
@ReactMethod
public void showAgain2(String message, int duration) {
String mes = "Hi " + message;
Toast.makeText(getReactApplicationContext(), message, duration).show();
}
有没有人知道我走错了哪一步?
EDIT ==========================
ReactNative中可能已有ToastAndroid
,因此我将名称更改为MyToastExample
。但是,现在错误变成了以下
有没有人遇到同样的问题?
答案 0 :(得分:0)
在this step中,检查您是否导入了正确的ToastModule
,因为ReactNative还有一个名为ToastModule
的类。
检查import com.facebook.react.modules.toast.ToastModule;
*ReactPackage.java
答案 1 :(得分:0)
import
代替require
。在我的情况下,我正在使用:
var Contacts = require( "react-native-unified-contacts" );
我遇到了undefined is not function
错误。
但是,更改为:
import Contacts from "react-native-unified-contacts";
为我解决了这个问题。
require
和import
显然对模块有不同的对待。