Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更新本地存储中的项时出现问题_Javascript_Reactjs_Local Storage - Fatal编程技术网

Javascript 更新本地存储中的项时出现问题

Javascript 更新本地存储中的项时出现问题,javascript,reactjs,local-storage,Javascript,Reactjs,Local Storage,在这里的一位用户的帮助下,我能够制作一个组件,但是现在我需要该组件的一个变体。该组件是一个递增/递减按钮,包含一些详细信息: 1-按钮位于来自API的数组中 2-增量/减量必须遵循银行中定义的规则,即项目的最大数量 3-当其中一个项目存在时,带有“购买”按钮的页脚应自动显示 4-当我单击Buy按钮时,项目将保存在localStorage中,并打开一个新屏幕,调用购物车,该购物车将包含相同的递增/递减按钮,但在列表中选择了保存在localStorage中的项目,并且按钮应递增/递减项目,并单击确认

在这里的一位用户的帮助下,我能够制作一个组件,但是现在我需要该组件的一个变体。该组件是一个递增/递减按钮,包含一些详细信息: 1-按钮位于来自API的数组中 2-增量/减量必须遵循银行中定义的规则,即项目的最大数量 3-当其中一个项目存在时,带有“购买”按钮的页脚应自动显示 4-当我单击Buy按钮时,项目将保存在localStorage中,并打开一个新屏幕,调用购物车,该购物车将包含相同的递增/递减按钮,但在列表中选择了保存在localStorage中的项目,并且按钮应递增/递减项目,并单击确认购买按钮,必须更新localStorage。 在第3项和第4项的一半之前,我都能做到,但我的递增/递减按钮有问题。下面是我的组件的代码

//更改数量按钮 从“React”导入React; 导入“/ChooseQuantity.css”; const ChooseQuantity={value,onChange,additionEnabled}=>{ const shouldIncrement=additionEnabled; 常数应减量=值>0; 常数减量==>{ 如果应该减量{ onchange值-1; } } 常量增量==>{ 如果应该增加{ onchange值+1; } } 常量递减按钮=是否应该递减? : 常量递增按钮=应该递增吗? : 回来 {递减按钮} {value} {递增按钮} } ChooseQuantity.defaultProps={ 值:0, additionEnabled:true, }
export default ChooseQuantity这可能不是您问题的完整答案,但您在componentDidMount中造成了一场地狱般的灾难,尤其是多次调用This.setState。记住一件事——每次调用this.setState时,都是在渲染组件。 另外,this.setState不会返回承诺,所以等待它。setState{…}没有任何意义

因此,组件的第一个改进是:

componentDidMount() {
  const cart = JSON.parse(localStorage.getItem('cart'));
  const {
    events,
    events: { tickets },
    total
  } = cart;
  this.setState({
    cart,
    events,
    banner_app: events.banner_app,
    event_name: events.event_name,
    priceTotal: total.price,
    quantity: total.totalQuantity,
    lot: tickets.lot,
    maxTotalItems: events.max_purchase,
    selectedLots: tickets.lot,
  });
}

this.setStateprevState=>{this.setState{SelectedQuantilities:{…prevState.SelectedQuantilities,[${ticketName}${separator}${TicketPrevState}${separator}${ticketUniqueNumber}${separator}${lotType}${separator}${lotNumber}{separator}${lotUniqueNumber}${separator}${lotPriceTax}:newValue}您正在另一个设置状态中调用一个设置状态,将其更改为单个设置状态,它应该可以工作。抱歉,@eshunsharma,我认为问题不在那里,因为此部分正在工作