reactjs - Reactjs按钮未触发
问题描述
我最近自学了 javascript、react 和 nodejs。我遇到了提交按钮不起作用但我拥有的其他按钮正在工作的问题。我使用 Chrome 作为我的浏览器,并且我也在 Firefox 中对其进行了测试,但我仍然无法正常工作。当前,当按下按钮时,它会完全重置状态。
我尝试将函数作为箭头函数传递,对该函数的引用,将按钮移动到子级之外,使用道具在子级内部移动。除了在孩子中编写函数之外的所有内容。
handleDocs = async () =>{
console.log('Handle Docs')
var x = this.state
if(x.Status==='Approved'){
var vendorList = []
var i = 0
await Axios.get('/staff/'+x['Credit Officer']).then(staff =>{
x['Credit Officer'] = staff.data[0]['First Name'] + ' ' + staff.data[0]['Last Name']
Axios.get('/staff/'+ x['Second Approval']).then(response =>{
x['Second Approval'] = response.data[0]['First Name'] + ' ' + response.data[0]['Last Name']
Axios.get('/staff/'+x.application['BDO']).then(response =>{
x.application['BDO'] = response.data[0]['First Name'] + ' ' + response.data[0]['Last Name']
Axios.post('/genCreditApproval/'+x.AppId, x).then(()=>{
Axios.get('return-CreditApproval/'+x.AppId, {responseType: 'blob'}).then((res)=>{
const pdfBlob = new Blob([res.data], {type: 'applicaiton/pdf'})
saveAs(pdfBlob, x.companyInfo['Company Name'] + ' Credit Aproval.pdf')
})
})
Axios.post('/genCreditScoreCard/'+x.AppId, x).then(()=>{
Axios.get('return-CreditScoreCard/'+x.AppId, {responseType: 'blob'}).then((res)=>{
const pdfBlob = new Blob([res.data], {type: 'application/pdf'})
saveAs(pdfBlob, x.companyInfo['Company Name'] + ' Score Card.pdf')
})
})
if(this.state.source['Source Class']===1){
Axios.post("/genCreditApprovalTransmittal/"+x.AppId, x).then(()=>{
Axios.get('/return-CreditApprovalTransmittal/'+x.AppId, {responseType: 'blob'}).then((res)=>{
const pdfBlob = new Blob([res.data], {type: 'application/pdf'})
saveAs(pdfBlob, x.companyInfo['Company Name'] + ' Approval Transmittal.pdf')
})
})
Axios.post("/genDocRequestForm/"+this.state.AppId, x).then(()=>{
Axios.get("/return-DocRequestForm/"+ this.state.AppId).then((res)=>{
const pdfBlob = new Blob([res.data], {type: 'application/pdf'})
saveAs(pdfBlob, x.companyInfo['Company Name'] + ' Doc Request Form.pdf')
})
})
}
else if(this.state.source['Source Class']===2){
Axios.post("/genCreditApprovalTransmittalDiscounter/"+this.state.AppId, x).then(()=>{
Axios.get('/return-CreditApprovalTransmittal/'+x.AppId, {responseType: 'blob'}).then((res)=>{
const pdfBlob = new Blob([res.data], {type: 'application/pdf'})
saveAs(pdfBlob, x.companyInfo['Company Name'] + ' Approval Transmittal.pdf')
})
})
Axios.post("/genFundingCoverSheet/"+this.state.AppId, x).then(()=>{
Axios.get("/return-FundingCoverSheet/"+this.state.AppId,x).then((res)=>{
const pdfBlob = new Blob([res.data], {type: 'application/pdf'})
saveAs(pdfBlob, x.companyInfo['Company Name'] + ' Funding Cover Sheet.pdf')
})
})
}
})
})
})
}
}
render() {
if(this.state.stage === 0){
return this.renderCredit();
}else if(this.state.stage === 1){
return <Additional nextStage={this.handleNext} handleText={this.handleAdditionalText} handleChange={this.handleAdditional} credit={this.state} />
}
else{
return <div>
{this.scoreCard()}
<br/>
<button className="btn btn-sm btn-success" onClick={this.handleDocs}>Submit</button>
</div>
}
}
}
我希望在单击按钮后下载 4 个 pdf。
解决方案
我认为你的状态正在改变,因为你直接在你的函数中操作状态对象,改变你的函数
handleDocs = async () =>{
console.log('Handle Docs')
var x = { ...this.state}; // create a copy
// remaining code
希望能帮助到你
推荐阅读
- python - Python:如何将字符串转换为 url 安全字符串?
- eclipse - 自动分享git项目遇到问题
- javascript - NavigationDuplicated 不允许导航到当前位置(“/search”)
- python - Rstudio + reticulate + python中的keras出错
- lotus-notes - 如何通过 LotusScript 访问文件资源
- c# - 在c#中将bmp编译为视频文件时,有没有办法保留alpha通道?
- python - 不同 QListView 显示选项之间的转换(是否使用 CheckBoxes)
- python - 是否有 OptionMenu 的替代品可以存储字符串以外的其他数据?
- git - Docker 中的 Jenkins 错误:CP 命令找不到目录
- elasticsearch - 通过logstash进入Elasticsearch时如何创建JSON格式日志