React Native-不是函数-未定义

时间:2019-02-20 23:36:18

标签: react-native

我在React Native中有以下代码

import React from "react";
import {
  StyleSheet,
  Text,
  View,
  Button,
  TextInput,
  Image,
  ScrollView
} from "react-native";

export default class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      apiData: [],
    };
    this.getButton();
  }

  deleteButton(Id){
    fetch("http://192.168.2.22:9090/usuario/" + (Id), {
      method: "DELETE"
    })
      .then(responseData => {
        console.log(responseData.rows);
      })
      .done();
    this.dataId = null;
  }

  render() {
    const data = this.state.apiData;
    let dataDisplay = data.map(function(jsonData) {
      return (
        <View style={styles.lista} key={jsonData.id}>
          <View style={styles.bordeLista}>
            <View style={styles.fila}>
              <View style={styles.contenedorfoto}>
                <Image
                  style={styles.foto}
                  source={require("./img/login.png")}
                />
              </View>
              <View style={styles.datos}>
                <Text>Nombre: {jsonData.nombre}</Text>
                <Text>E-mail: {jsonData.email}</Text>
                <Text>Telefono: {jsonData.telefono}</Text>
              </View>
            </View>
            <View style={styles.fila}>
              <View style={styles.contenedorboton}>
                <View style={styles.botoniz}>
                  <Button title="Modificar" onPress={() => {}} />
                </View>
                <View style={styles.botonde}>
                  <Button
                    title="Eliminar"
                    onPress={() => this.deleteButton(jsonData.Id)}
                    color="#ee4c4c"
                  />
                </View>
              </View>
            </View>
          </View>
        </View>
      );
    });
    return (
        <Text style={styles.titulo}>Usuarios desde BD MySQL</Text>
        
        <ScrollView>
          <View>{dataDisplay}</View>
        </ScrollView>
      </View>
    );
  }
}

我想从此按钮调用deleteButton()

<Button
   title="Eliminar"
   onPress={() => this.deleteButton(jsonData.Id)}
   color="#ee4c4c"
/>

但是我收到以下错误消息:该方法不是函数,并且未定义。

Error

如何使用该功能?我正在很好地设置参数(id)。谢谢。

PS:我已经删除了部分代码,只保留了最重要的部分,如果需要完整的代码,我可以提供

1 个答案:

答案 0 :(得分:1)

由于使用的是老式的lambda,因此您丢失了对this的引用。

替换此

data.map(function(jsonData) {

具有箭头功能,例如

data.map(jsonData => {