在React Native中创建android本机模块时,“undefined不是函数”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在React Native中创建android本机模块时,“undefined不是函数”相关的知识,希望对你有一定的参考价值。

我正在关注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();
}

我遇到以下错误:“undefined不是函数”

enter image description here

如果我添加新的导出方法,则会再次显示此错误,如下所示:

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

有没有人知道我走错了哪一步?

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

在React Native中可能已经存在qazxsw poi,我是否将名称更改为qazxsw poi。但是,现在错误变成了以下内容

ToastAndroid

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

答案

MyToastExample,检查你是否导入了正确的enter image description here,因为ReactNative也有一个名为this step的类。

检查ToastModule中是否存在此行ToastModule

另一答案

Try using import com.facebook.react.modules.toast.ToastModule; instead of *ReactPackage.java.

在我的情况下,我正在使用:

import

我得到了require错误。

但是,改为:

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

为我解决了这个问题。

显然,undefined is not functionimport Contacts from "react-native-unified-contacts"; 对模块的处理方式不同。

以上是关于在React Native中创建android本机模块时,“undefined不是函数”的主要内容,如果未能解决你的问题,请参考以下文章

如何在 React Native 中创建 Android 即时应用程序?

如何在 React Native 中创建对角线边框?

如何在 React-Native 中创建检测自动位置的地图

如何在 React Native 中创建文本边框?

如何在 React-native 中创建下拉菜单?

如何在 react-native (iOS) 中创建离散滑块?