我有以下查询。我正在制作一个简单的应用程序,其中添加了产品,并且这些(对象)具有名称和价格。我想要做的是在我渲染变量的地方,当我添加一个产品时出现总和,而不是在我看来是:(加 1) 123..
将添加的单击事件出现的值添加到我是有效的,但它显示的不是总数,而是总和的历史。
let i = 0;
let total = this.state.list.map((x, i) => {
let val = parseInt(x.price);
i += val;
return i;
console.log('suma ', i);
})
return(
<Container>
<Row>
<Col sm='6'>
<Form>
<FormGroup>
<Label>Producto</Label>
<Input type='text' name='product' onChange={ e => this.getData(e) } placeholder='añade un item'></Input>
</FormGroup>
<FormGroup>
<Label>Precio</Label>
<Input type='text' name='price' onChange={ e => this.getData(e) } placeholder='añade un item'></Input>
</FormGroup>
<Button className='btn btn-success' onClick={ e => this.submitData(e) } >Añadir</Button>
</Form>
</Col>
<Col sm='6' className='mt-4 border' style={{ overflowY: 'scroll', position: 'relative', height: '200px'}}>
<h4>Productos {listado.length}</h4>
<TransitionGroup>
{listado}
</TransitionGroup>
</Col>
</Row>
<Row>
<Container className='mt-4'>
{total} **aqui es donde me aparece el 123..en vez del total**
</Container>
</Row>
</Container>
);
我在您的代码中看到的错误:
i
(我假设这是您想要累积总和的地方)定义了 2 次,一次使用let
和一次在您的 anonymousmap
中。(x, i)
,在您的for定义中map
,a被分配了列表和索引的当前值,这与您稍后在函数逻辑中所做的不一致。x
i
map
返回的是一个列表,其中包含您在传递给的回调函数中返回的每个值map
。然后,由于您要返回的值i
(这是数组的索引),因此您只需将 total 分配给 array[1, 2, 3]
。您真正需要解决问题的是reduce
,您甚至不需要累加器变量。console.log
永远不会被击中,因为你return
甚至在它到达那条线之前就做出了。有了这些迹象,您应该足以亲眼看到如何解决您的问题。干杯