clickHandler(type) {
for (var i = 0; i < this.state.pokemon.length ; i++) {
//console.log(this.state.pokemon[i]);
//Do something temp1.types[0].type.name
for(var j = 0; j < this.state.pokemon[i].types.length; j++) {
if(this.state.pokemon[i].types[j].type.name == type.target.value) {
var toBeAppened = this.state.filteredPokemon.slice()
toBeAppened.push(this.state.pokemon[i])
this.setState({
filteredPokemon: this.state.filteredPokemon
})
}
}
}
console.log(this.state.filteredPokemon)
}
此函数是将状态数组“pokemon”的特定数据部分附加到另一个名为“filteredPokemon”的状态数组的处理程序。
运行之后,我的filteredPokemon只是一个空数组。 我通过使用console.log进行调试来检查这是否有效,但是它没有正确地附加到我的“filteredPokemon”中
可能是什么问题?
答案 0 :(得分:0)
我可以假设,问题是,你将错误的变量设置为状态。您应该设置toBeAppended
数组而不是
clickHandler(type) {
for (var i = 0; i < this.state.pokemon.length; i++) {
//console.log(this.state.pokemon[i]);
//Do something temp1.types[0].type.name
for (var j = 0; j < this.state.pokemon[i].types.length; j++) {
if (this.state.pokemon[i].types[j].type.name == type.target.value) {
var toBeAppened = this.state.filteredPokemon.slice();
toBeAppened.push(this.state.pokemon[i]);
// you are adding an item to toBeAppened array, therefore you should set this array into state
this.setState({
filteredPokemon: toBeAppened
});
}
}
}
console.log(this.state.filteredPokemon);
}
第二个问题可能是,每个宠物小精灵的types
数组都是空的,因此第二个嵌套循环没有调用。
尝试调试if
条件,可能this.state.pokemon[i].types[j].type.name == type.target.value
表达式返回false
答案 1 :(得分:0)
我不确定您是如何处理数据的。什么是口袋妖怪对象?对我来说,处理数据和过滤小宠物的最简单方法应该是这样的:
$q.all
这样过滤你的小宠物应该非常简单:
defer.promise