React.js中onChange无法更新有状态对象的问题求助
问题解决:React状态更新不同步导致quantity始终为0
你现在的问题出在连续调用了两次setOrderlist,React的状态更新是异步且批量处理的,两次更新都基于同一个旧的orderlist状态,导致第二次更新覆盖了第一次的修改——看起来你能看到total正确,大概率是因为第一次更新的临时状态被你捕获到,但最终生效的是第二次只更新quantity的操作,而由于异步特性,quantity的更新也没正确同步。
直接把两个状态更新合并成一次就行,这样能同时修改quantity和total:
const handleAmount = (amount) => { setOrderlist({ ...orderlist, quantity: amount, total: orderlist.price * amount }); };
如果你的orderlist还会被其他地方修改,更稳妥的方式是用函数式更新,基于前一次的最新状态来计算:
const handleAmount = (amount) => { setOrderlist(prevOrder => ({ ...prevOrder, quantity: amount, total: prevOrder.price * amount })); };
这样就能保证quantity和total都被正确更新,不会出现一个生效一个不生效的情况。
内容的提问来源于stack exchange,提问作者Yoqubxon Xamidoff
相关产品推荐
相关产品推荐

