【发布时间】:2021-07-20 17:41:59
【问题描述】:
当我单击特定字母表时,我有一组从 A 到 Z 的按钮,包含该字母表的品牌应如 link 所示显示。我创建了一个数组并在名为brandSortData 的变量中设置所有值的状态,如下代码所示
createBrandsMapData(){
let brandData = {}
brandList.map((key) => {
brandData[key] = this.state.items.filter((currentValue) => {if(currentValue.value[0] === key) return currentValue})
})
this.setState({
allBrands: brandData,
brandSortData: brandData
})
}
我在下面handleClick()下面有这个
handleClick = event =>{
const brandValues = event.target.value
if(event.target.value === "all"){
return this.getBrands()
}
else{
console.log(this.state.brandSortData)
let brandSortDataByCharacter = this.state.brandSortData.filter((currentCharacter) => {if(currentCharacter.value[0] === brandValues) return currentCharacter})
return brandSortDataByCharacter
}
}
我在filter() 作为Uncaught TypeError: _this.state.brandSortData.filter is not a function 中遇到错误。我有这个getBrandSortData() 生成按钮的地方
getBrandSortData(){
return(
<div className="BrandPageList_AlphabetContainer">
<button value="all" className="BrandPageList_AllButton" onClick={this.handleClick}>All</button>
{brandList.map((item,index) =>
<button value={item} key={index} className="BrandPageList_AlphabetButtons" onClick={this.handleClick}>{item}</button>
)}
</div>
)
}
我如何解决这个问题我被困在这里。这是brandData 的格式,如图所示
【问题讨论】:
-
你的
brandData定义为一个对象,应该是一个数组 -
@MichaelRovinsky 我将
brandData更新为一个数组,但是当我点击字母时它返回一个空数组 -
brandList的数据格式是什么? -
@MichaelRovinsky 请检查问题中的更新图像
-
我认为您根本不需要
brandData,您只需单击字母按钮即可过滤您的品牌列表。这就是为什么我问的是brandList,而不是brandData
标签: javascript arrays reactjs ecmascript-6