我有一个多选
select将值保存到用逗号分隔的字符串中,所以我使用zag()将字符串转换为数组
this.state.value: zemm,lena
zag()之后:
cleanArray : ["zemm","lena"];
在有一个干净的数组后我试图获取数组中每个值的数据,我的想法是连接所选的每个名字的数据。但是一旦我从数组中删除值,数据就会不断增加。
如果我选择“zemm”,可以说它有10个对象的数组[{...},{...} ..]。然后删除它,我最终得到20个对象,如果我再添加它,30个对象......
zag(){
const arrayMessy = this.state.value +'';
var arraySplit = [];
arraySplit = arrayMessy.split(',');
this.setState({cleanArray: arraySplit},() => this.zag2());
}
zag2(){
var arrayLimpo = this.state.cleanArray;
for (var i = 0; i < arrayLimpo.length; i++) {
const url = 'http://localhost:8000/issues/assigned/';
const value = arrayLimpo[i];
const string = url+value+'&maxResults=5000';
fetch(string)
.then(function(response) {
return response.json();
})
//.then((myJson) => this.setState({data: myJson.issues}));
.then((myJson) => this.setState({ data: this.state.data.concat(myJson.issues)}));
}
}
任何帮助表示赞赏!感谢
答案 0 :(得分:1)
您的代码似乎在行上方有正确但已注释的版本,这会导致问题。您的数据正在成倍增加,因为您将服务器返回的内容连接到已存在的任何内容 - 现有数据数组不会在请求之间清除。
编辑: 现在理解了这个问题,你可以改变
this.setState({cleanArray: arraySplit},() => this.zag2());
到
this.setState({cleanArray: arraySplit, data: []},() => this.zag2());
然后它会像你期望的那样工作。