与ReactJS don'的联系方式;t向firebase发送数据
lemme解释说:“我是ReactJS的新手,当时正在用Firebase构建一个应用程序,在这个应用程序中,我面临着一个奇怪的场景。”与ReactJS don'的联系方式;t向firebase发送数据,reactjs,firebase,google-cloud-firestore,mdbreact,Reactjs,Firebase,Google Cloud Firestore,Mdbreact,lemme解释说:“我是ReactJS的新手,当时正在用Firebase构建一个应用程序,在这个应用程序中,我面临着一个奇怪的场景。” sendtofirebase() { db.collection('contacts').add({ name:'faizam', email:'shdj', subject:'hdjshj', message:'hjhdjs', }).then(()=>{ alert
sendtofirebase()
{
db.collection('contacts').add({
name:'faizam',
email:'shdj',
subject:'hdjshj',
message:'hjhdjs',
}).then(()=>{
alert("Data Sent");
}).catch((error)=>{
alert("Error is",error);
});
alert(" from firebase")
}
submitbtn()
{
console.log('Name',this.state.name);
console.log('Email',this.state.email);
console.log('subject',this.state.subject);
console.log('message',this.state.message);
this.sendtofirebase();
alert("from submitbtn");
}
onSubmit={()=>this.submitbtn()}
如果a调用这样的函数,数据不会在firebase中累积,但会显示警报(“来自firebase”)。如果我像这样调用“onSubmit={this.submitbtn()}”,那么即使在触发submit按钮之前,数据也会添加到firebase中。我不明白为什么我要面对这种奇怪的行为
这是完整的联系方式代码
import React,{Component} from 'react';
从'./firebase'导入{db};
从“mdbreact”导入{MDBContainer、MDBRow、MDBCol、MDBBtn、MDBIcon、MDBInput};
类ContactForm扩展组件
{
建造师(道具)
{
超级(道具);
这个州=
{
名称:“”,
电子邮件:“”,
主题:'',
消息:“”
}
}
sendtofirebase()
{
db.collection('contacts')。添加({
姓名:'faizam',
电邮:"shdj",,
主题:'hdjshj',
消息:'hjhdjs',
}).然后(()=>{
警报(“发送的数据”);
}).catch((错误)=>{
警报(“错误为”,错误);
});
警报(“来自firebase”)
}
submitbtn()
{
console.log('Name',this.state.Name);
console.log('Email',this.state.Email);
console.log('subject',this.state.subject);
console.log('message',this.state.message);
这是sendtofirebase();
警报(“来自submitbtn”);
}
render()
{
返回(
this.submitbtn()}>
与我联系
发送
);
}
}导出默认联系人表单;
我不确定这是否是您的问题,但可能是您的函数具有错误的此绑定
要解决此问题,您应该更改:
sendtofirebase()
{
db.collection('contacts').add({
name:'faizam',
email:'shdj',
subject:'hdjshj',
message:'hjhdjs',
}).then(()=>{
alert("Data Sent");
}).catch((error)=>{
alert("Error is",error);
});
alert(" from firebase")
}
submitbtn()
{
console.log('Name',this.state.name);
console.log('Email',this.state.email);
console.log('subject',this.state.subject);
console.log('message',this.state.message);
this.sendtofirebase();
alert("from submitbtn");
}
致:
基本上,
someFunction=()=>{}
将函数放在类的构造函数中,这应该意味着调用this。someFunction()
肯定是指上下文中的正确绑定。我不确定这是否是您的问题,但可能是您的函数具有错误的此绑定
要解决此问题,您应该更改:
sendtofirebase()
{
db.collection('contacts').add({
name:'faizam',
email:'shdj',
subject:'hdjshj',
message:'hjhdjs',
}).then(()=>{
alert("Data Sent");
}).catch((error)=>{
alert("Error is",error);
});
alert(" from firebase")
}
submitbtn()
{
console.log('Name',this.state.name);
console.log('Email',this.state.email);
console.log('subject',this.state.subject);
console.log('message',this.state.message);
this.sendtofirebase();
alert("from submitbtn");
}
致:
基本上,
someFunction=()=>{}
将函数放在类的构造函数中,这应该意味着调用this。someFunction()
肯定是指这个上下文中的右边部分。在开发工具的网络选项卡或控制台中发生了什么?看起来很奇怪,它既不调用firebase回调中的任何警报我已经检查了“网络”选项卡,但如果我调用submitbtn()函数时没有与firebase建立此“()=>”连接,但如果我像这样调用函数“()=>this.submitbtn()”,问题是相同的firebase不显示与应用程序的任何连接。在()=>this.submitbtn的情况下,应用程序不会从firebase获得任何响应,但会在this.submitbtn()中从firebase获得响应。在开发工具的网络选项卡或控制台中是否发生任何情况?看起来很奇怪,它既不调用firebase回调中的任何警报我已经检查了“网络”选项卡,但如果我调用submitbtn()函数时没有与firebase建立此“()=>”连接,但如果我像这样调用函数“()=>this.submitbtn()”,问题是相同的firebase不显示与应用程序的任何连接。在()=>this.submitbtn()的情况下,应用程序不会从firebase获得任何响应,但会在this.submitbtn()中从firebase获得响应。不,这也不起作用,但如果我在不使用“()=>的情况下调用但它会造成函数在我单击submit按钮之前触发的问题。不,这也不起作用,但如果我在没有“()=>”的情况下调用函数,它会起作用,但它会造成函数在我单击submit按钮之前触发的问题。
sendtofirebase = () => {
db.collection('contacts').add({
name:'faizam',
email:'shdj',
subject:'hdjshj',
message:'hjhdjs',
}).then(()=>{
alert("Data Sent");
}).catch((error)=>{
alert("Error is",error);
});
alert(" from firebase")
}
submitbtn = () => {
console.log('Name',this.state.name);
console.log('Email',this.state.email);
console.log('subject',this.state.subject);
console.log('message',this.state.message);
this.sendtofirebase();
alert("from submitbtn");
}