【发布时间】:2021-07-29 11:26:52
【问题描述】:
我正在创建一个动态报告,您可以在两个列表中添加/删除产品
- 第一个列表是产品订单
- 第二个是数据库中的其余产品
我只想在点击提交按钮时调用我的 api,所以在此之前,我的状态中的所有内容都应该更新。
添加按钮与下面的代码完美配合:
function onAddClicked(productId){
let newProduct = filteredProducts.find(x => x.productId === productId);
let updatedProductList = purchaseOrderDetails;
newProduct.adjustByAmount = newProduct.total;
updatedProductList.push(newProduct);
setPurchaseOrderDetails(updatedProductList);
filterDuplicates(filteredProducts, purchaseOrderDetails);
}
其中 setPurchaseOrderDetails 是订单中的产品,而 filterDuplicates 设置其余产品的状态,所有产品在这里都可以正常工作。
但是,在我的删除功能上,其余产品的状态似乎更新了,但订单上的产品数量似乎并没有减少,因为状态保持不变。
function onDeleteClicked(productId){
let excludedProducts = filteredProducts;
let deletedIndex = purchaseOrderDetails.findIndex(x => x.productId === productId);
let productToDelete = purchaseOrderDetails[deletedIndex];
productToDelete.total = 0;
productToDelete.adjustByAmount = 0;
let detailsToUpdate = purchaseOrderDetails.filter(x => x.id !== productToDelete.id)
console.log('updateDetails', detailsToUpdate)
excludedProducts.push(productToDelete);
console.log('updateFilter', excludedProducts)
setPurchaseOrderDetails(detailsToUpdate);
setFilteredProducts([...filteredProducts]);
console.log('stateDetail', purchaseOrderDetails)
console.log('stateFilter', filteredProducts)
}
我还在我的 setPurchaseOrderDetails 之前登录了控制台,我可以看到过滤器工作正常,但是当它到达需要更新状态时它不需要更新。
【问题讨论】:
标签: javascript reactjs react-native state