【发布时间】:2019-05-10 00:31:45
【问题描述】:
本质上,我有这个工作,我正在构建一个游戏组件以允许用户选择他们想要购买的物品,他们被推送到一个待处理的数组中,然后当他们想要结账时,我正在推送这些对象待处理的数组放入购买的数组中。
但是在那之后发生了一些非常奇怪的事情,数组看起来工作正常,挂起的数组是空的,并且购买的数组中有正确的项目。一旦我尝试单击要放入待处理数组中的新项目,如果它与购买的数组中的相同项目会改变那里的计数器,就会出现问题。
我一直在尝试不同的方法来尝试解决此问题,但如果不重新设置状态,我不知道它如何影响购买的阵列。
这是我迄今为止运行此供应商功能的代码。
handleMerchantEquipment(item) {
let pending = this.state.merchantPending;
let found = Equipment.find(el => item === el.Name);
let check = pending.find(el => el.Name === found.Name);
if (!check) {
pending.push(found);
}
else {
var foundIndex = pending.findIndex(el => el.Name === check.Name);
check.Count +=1;
pending[foundIndex] = check;
}
let CP = [0];
let SP = [0];
let GP = [0];
let PP = [0];
pending.map(item => {
let cost = item.Cost * item.Count;
if (item.Currency === "CP") {
CP.push(cost);
}
else if (item.Currency === "SP") {
SP.push(cost);
}
else if (item.Currency === "GP") {
GP.push(cost);
}
else if (item.Currency === "PP") {
PP.push(cost);
}
});
let purchased = [];
this.state.merchantPending.map(item => {
purchased.push(item)
});
this.setState({
yourCP: totalCP,
yourSP: totalSP,
yourEP: totalEP,
yourGP: totalGP,
yourPP: totalPP,
purchased: purchased,
merchantPending: [],
});
其中一些代码与他工作正常的货币兑换有关。
我也尝试过 ... 来更新数组,但问题仍然存在,因为它更新了购买状态下的 Count。
【问题讨论】:
标签: arrays reactjs object state setstate