【发布时间】:2023-02-11 19:10:25
【问题描述】:
所以我觉得自己像个白痴。我将数字串在一起而不是从我的州添加。我似乎无法使用正常的更新状态方法来解决它。 它用于选择从库存中购买多少物品的组件。当我可以选择一次购买一个时,一切正常。现在我已经添加了应该控制它的“puchaseAmount”状态。如果我尝试一次购买 10 个,数量会中断并串成“010101010”。同样的事情也发生在拥有的物品总数上。我觉得我错过了一些简单而愚蠢的东西哈哈
const [quantityOwned, setQuantityOwned] = useState(0);
const [purchaseAmount, setPurchaseAmount] = useState(10);
const productIndex = newArray.findIndex((p) => p.id === product.id);
if (productIndex !== -1) {
newArray[productIndex].quantity = newArray[productIndex].quantity + purchaseAmount
const newCost = newArray[productIndex].cost * increaseConstant;
newArray.push({
...product,
cost: newCost
});
} else {
newArray.push({
...product,
quantity: purchaseAmount,
});
}
if (productType === 'items') {
setPlayerCharacter({
...playerCharacter,
items: newArray,
});
}
// // Increase product cost
const newCost = product.cost * 1.1;
product.cost = newCost.toFixed(2);
// PPC Product
if (product.type === 'pointsPerClick') {
// Assign current values
let currentPointsPerClick = playerCharacter.pointsPerClick;
let currentTotalScore = playerCharacter.totalScore;
let newPointsPerClickValue = currentPointsPerClick + product.effect;
let newTotalScore = currentTotalScore - product.cost;
setQuantityOwned(quantityOwned + purchaseAmount); // This is the trouble
// i tried also (prev => prev + purchaseAmount)
let newTotalBuildingsOwned = playerCharacter.totalBuildingsOwned;
let newTotalItemsOwned = playerCharacter.totalItemsOwned;
if (productType === 'items') {
const newNum = playerCharacter.totalItemsOwned + purchaseAmount;
newTotalItemsOwned = newNum;
}
if (productType === 'buildings') {
const newNum =
playerCharacter.newTotalBuildingsOwned + purchaseAmount;
newTotalBuildingsOwned = newNum;
}
setPlayerCharacter({
...playerCharacter,
pointsPerClick: newPointsPerClickValue,
totalScore: newTotalScore,
totalItemsOwned: newTotalItemsOwned,
totalBuildingsOwned: newTotalBuildingsOwned,
});
}
【问题讨论】:
-
与整个组件一起共享输出。
标签: javascript reactjs state