我正在尝试构建某种硬币收集器,并且单击按钮上的功能会向数据库触发获取请求,以将数字更新一个。现在,仅在刷新页面后才显示新编号。我打算在fetch函数放置新值后重新渲染组件。但是在我的代码中,从未达到fetch函数之后的承诺,因此总是在完成fetch之前触发更新。我还考虑过更新物品的状态,但是由于地图功能创建了多个卡,因此我无法更改单个卡的状态。
所以这是我渲染语义卡并调用updateNumber的函数。
IJavaScriptExecutor js = (IJavaScriptExecutor)_driver;
var element = js.ExecuteScript("return document.querySelector('selector_outside_shadow_root').shadowRoot.querySelector('selector_inside_shadow_root');");
这就是updateNumber函数
renderCards = ({ idCollection, countryName, Year, SpecialCoins, name, existing, number, circulating, commemorative, edition, coinImage }) =>
<div className="card">
<div className="image">
<img alt={coinImage} src={"http://localhost:3000/images/" + coinImage + ".png"} />
</div>
<div className="content">
<button onClick={(e) => this.updateNumber(e, idCollection, number)} className="circular ui icon button">{number}</button>
<div className="ui sub header" key={Year} countryName={countryName} year={Year}>{Year + " " + name + " " + countryName}
</div>
</div>
<div className="extra content">
<span className="right floated">Auflage: {edition}</span>
</div>
</div>
最后这是我从中获取数据的代码
updateNumber(e,idCollection,number){
var data={
idCollection:idCollection,
number:number + 1
}
update(data);
function update(data) {
fetch('http://localhost:3001/all/update', {
method: 'put',
body: JSON.stringify(data),
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
}) //From here on the promises are never reached
.then(checkStatus)
.then(()=>console.log('updated!!!'))
}
function checkStatus(response) {
if (response.status >= 200 && response.status < 300) {
return response
} else {
var error = new Error(response.statusText)
error.response = response
throw error
}
}
}
我已经好几个小时没有为此提出解决方案了,我希望有人知道我的想法并可以提供帮助。谢谢!