【发布时间】:2019-09-04 02:19:03
【问题描述】:
我正在建立一个在线商店。单击结帐按钮时,侧边栏会滑入视图,显示购物车中的项目列表。购物车里面是它的物品清单。您可以通过切换 Bootstrap-React 提供的 Form.Control 元素中的向上/向下箭头来更改数量。
我的代码的工作方式是,当您切换向上/向下箭头以添加或减少产品数量时,父级中的状态会根据您的购物车中的内容发生变化。这会触发子购物车侧边栏关闭然后重新打开。我不希望这种情况发生!侧边栏应保持打开状态。
我尝试了两件事;一种是使用 event.preventDefault() 尝试并使其不刷新页面,但这不起作用。
另一件事是尝试使用shouldComponentUpdate 并检查项目数量是否已更改,然后阻止应用重新渲染。这是我使用的代码:
shouldComponentUpdate(nextProps, nextState) {
if (
nextState.cart &&
nextState.cart.length > 0 &&
this.state.cart.length > 0
) {
console.log("Next state cart num= " + nextState.cart[0].num)
console.log("curr state cart num= " + this.state.cart[0].num)
if (nextState.cart[0].num != this.state.cart[0].num) {
return false;
}
}
return true;
}
问题是我以前和以后的道具是一样的!因此,我无法编写任何代码来防止重新渲染项目数量的变化。
谁能给点建议?
【问题讨论】:
标签: javascript reactjs