我花了几个小时考虑如何setState
到onPress
组件来改变我想要的道具。
在实际项目中,SpecialItem
由map
函数呈现,因此我无法为每个子项创建唯一的state
并将其放在isfavourite
道具上
例如,我希望第二个SpecialItem
onPress
将isfavourite
更改为true
render(
return(
<View>
<SpecialItem ref={'sp_1'} isfavourite={false} onPress={()=> this.checkFav()}/>
<SpecialItem ref={'sp_2'} isfavourite={false} onPress={()=> this.checkFav()}/>
<SpecialItem ref={'sp_3'} isfavourite={false} onPress={()=> this.checkFav()}/>
</View>
);
);
作为请求,这是map
函数exmaple:
renderSpecialItem = () =>{
return speciallist.map((item, i)=>{
return(
<SpecialItem key={i} isfavourite={item.isFav} onPress={()=> this.checkFav()}/>
);
});
}
答案 0 :(得分:0)
您可以随时保存索引(来自地图循环),然后检查当前索引是否等于状态
isFavourite={this.state.selectedItemIndex === index}
onPress={()=> this.checkFav(index)}
答案 1 :(得分:0)
使用状态在修改内容时重新呈现列表。
baseList