Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TypeError:undefined不是React Native中的对象(计算';this.state.Gas';)_Javascript_Reactjs_React Native - Fatal编程技术网

Javascript TypeError:undefined不是React Native中的对象(计算';this.state.Gas';)

Javascript TypeError:undefined不是React Native中的对象(计算';this.state.Gas';),javascript,reactjs,react-native,Javascript,Reactjs,React Native,在react native中开发应用程序时,我尝试使用客户端数据和产品类型发出动态警报,但当我尝试构建连接字符串的变量时,我遇到了此错误 TypeError:undefined不是对象(正在计算'this.state.Gas') 以下是我的代码的相关部分: 呈现: render() { return ( <ScrollView style={styles.container}> <Text style={styles.Titulo}>P

在react native中开发应用程序时,我尝试使用客户端数据和产品类型发出动态警报,但当我尝试构建连接字符串的变量时,我遇到了此错误

TypeError:undefined不是对象(正在计算'this.state.Gas')

以下是我的代码的相关部分:

呈现:

render() {
    return (
      <ScrollView style={styles.container}>
        <Text style={styles.Titulo}>Pide tu cilindro!</Text>
        <View style={styles.cuadros}>
          <View style={styles.gas}>
            <Image
              source={require("./assets/licuado-2kg.png")}
              style={{ height: 170, width: 170 }}
            />
          </View>
          <View style={styles.texto}>
            <Text style={styles.cilindros}>GASCO 2 kg</Text>
            <TouchableOpacity
              style={styles.btnpedir}
              onPress={this.confirm}
            >
              <Text style={styles.pedir}>Pedir</Text>
            </TouchableOpacity>
          </View>
        </View>
        
      </ScrollView>
    );
  }
}
功能:

confirm() {
    let variable = this.state.Gas
    let datos = this.state.displayName + this.state.Ciudad + this.state.Comuna + this.state.Direccion
    let texto = "Deseas confirmar el pedido de: ".concat(variable, " a: ", datos)
    Alert.alert(
      "Confirmar pedido",
      texto,
      [
        {
          text: "Confirmar",
          onPress: () => console.log("Confirmar"),
        },
        {
          text: "Editar datos",
          onPress: () => console.log("Editar"),
        },
        {
          text: "Cancelar",
          onPress: () => console.log("Cancelar"),
          style: "cancel",
        }
      ],
      { cancelable: false }
    );
  }
组件安装:

componentDidMount() {
    const { email, displayName } = firebase.auth().currentUser;
    this.setState({ email, displayName });

    firebase
      .firestore()
      .collection("Users")
      .where("Email", "==", email)
      .get()
      .then((snapshot) => {
        this.setState({ Doc: snapshot.docs[0].id });
        firebase
          .firestore()
          .collection("Users")
          .doc(this.state.Doc)
          .get()
          .then((doc) => {
            this.setState({
              Ciudad: doc.data().City,
              Direccion: doc.data().Direction,
              Comuna: doc.data().Comuna,
            });
          });
      });
  };

我该怎么解决这个问题呢?

我想你应该绑定确认函数

onPress={this.confirm.bind}

根据您给定的代码。在代码构造函数中

constructor(props) {
  super(props);
  this.state = {
    email: "",
    displayName: "",
    Ciudad: "",
    Comuna: "",
    Direccion: "",
    Gas: "GASCO 2 kg"
  };
}
您已经预定义了“GAS”状态,但我们没有找到“Gase”。 这是打字错误还是其他问题?如果否,则可以将构造函数更改为

constructor(props) {
  super(props);
  this.state = {
    email: "",
    displayName: "",
    Ciudad: "",
    Comuna: "",
    Direccion: "",
    Gas: "GASCO 2 kg",
    Gase: "",
  };
}
然后在componentDidMount或其他地方进行更新。
有关更多信息,请检查React的

React处理程序未自动绑定到它们所在的元素/类。为此,您可以使用以下代码在构造函数中绑定它们:

this.confirm=this.confirm.bind(this)

您还可以将ES6用作另一种替代方案,例如:

<Button onClick={() => this.onConfirm()}
this.onConfirm()}

是否已将
绑定到
确认
函数以定义
此.状态
?是否应在构造函数中绑定
this.confirm=this.confirm.bind(this)
或将
确认
转换为箭头函数,以便
为您自动绑定。问题标题为
TypeError:undefined不是对象(评估'this.state.Gase')…
,而在其描述中
TypeError:undefined不是对象(评估'this.state.Gas')
。请准确地更新您正在收到的错误或如果您同时收到了这两个错误?所述错误
TypeError:undefined不是一个对象(评估'this.state.Gas')
,因此标题中基本上没有提到使用
Gase
<Button onClick={() => this.onConfirm()}