【发布时间】:2019-08-03 09:04:02
【问题描述】:
我正在尝试以状态数组的形式将内容添加到列表中。但是,使用我当前的代码,第一项无法正确添加。
export default class Main extends React.Component {
constructor(props) {
super(props);
this.state = {
list: [],
total: 0.00,
...
}
}
//some unimportant code here
addToList = item => {
this.setState({list: [...this.state.list, item]});
//This method call for a method that gets the total price of all the items
this.getTotal();
}
//this method works fine, except with the first element
getTotal() {
this.setState(({sum= 0.0, items, list}) => {
items.forEach(element => {
if(this.state.list.length !== 0.0) {
if(this.state.list.includes(element.name)) {
sum += parseFloat(element.price);
}
}
});
this.setState({total: sum});
});
}
}
当我console.log list 状态时,我得到第一个项目的空数组,然后项目延迟一个。因此,如果我添加项目 A 并查看控制台,我什么也看不到。当我添加项目B 并查看控制台时,我看到Array 和项目A。关于造成这种情况的任何想法?
【问题讨论】:
-
你想在这里实现什么?我可能不会将方法传递给 setState?然后在该方法中调用 setState?
-
@dezman getTotal 方法不是我遇到的问题,我只是添加了它,以便您更好地了解 addToList 方法包含的内容。
标签: javascript reactjs state setstate