我关注 ReactNative Native Module Guide编写可以在JS端使用的java类。导出的方法是show来自类(class)ToastModule (导出为 ToastAndroid )。 show方法如下:

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

当我从 Button onPress 处理程序调用 ToastAndroid.show 时,toast 按钮的所有工作都会按预期出现。
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(); 
} 

我遇到以下错误:“未定义不是函数”



如果我添加新的导出方法,则会再次显示此错误,如下所示:
@ReactMethod 
public void showAgain2(String message, int duration) { 
    String mes = "Hi " + message; 
    Toast.makeText(getReactApplicationContext(), message, duration).show(); 
} 

有谁知道我走错了哪一步?

编辑===========================

可能已经有 ToastAndroid在 ReactNative 中,所以我将名称更改为 MyToastExample .但是,现在错误变为以下



有没有人遇到同样的问题?

请您参考如下方法:

this step ,检查你是否有导入权限ToastModule , 因为 ReactNative 也有一个类叫做 ToastModule .

检查此行是否 import com.facebook.react.modules.toast.ToastModule;存在于 *ReactPackage.java


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!