Javascript TypeError:undefined不是React Native中的对象(计算';this.state.Gas';)
在react native中开发应用程序时,我尝试使用客户端数据和产品类型发出动态警报,但当我尝试构建连接字符串的变量时,我遇到了此错误 TypeError:undefined不是对象(正在计算'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
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()}