【发布时间】:2018-12-26 00:50:46
【问题描述】:
下面是我的 Flatlist 代码。它工作正常,但有点滞后。所以我在互联网上搜索了一下,发现将 Component 更改为 PureComponent 可以提高平面列表的性能。所以我改变了它,但在那之后我的 iconType 不起作用。当用户触摸列表项时,它不会更改该复选框。 PureComponent 是否不会在触摸时重新呈现?
<FlatList
style={{flex:1}}
data={finalData}
showsVerticalScrollIndicator={false}
renderItem={({item})=>{
var iconType = (this.state.selectedItems.indexOf(item.name)>-1?"ios-checkmark-circle":"ios-checkmark-circle-outline");
return(
<TouchableOpacity
onPress={
()=>{
var selectedItems = this.state.selectedItems;
var selectedItemsData = this.state.selectedItemsData;
if(selectedItems.indexOf(item.name)>-1){
const index = selectedItems.indexOf(item.name);
selectedItems.splice(index, 1);
selectedItemsData.splice(index,1);
}else{
selectedItems.push(item.name);
selectedItemsData.push({name:item.name,id:item.id});
}
this.setState({selectedItems});
this.setState({selectedItemsData});
}}>
<View style={{padding:20,flexDirection:'row',alignItems:'flex-start'}}>
<Icon name={iconType} color="#45AA6F" size={25} />
<Text style={{marginLeft:10,paddingTop:4,color:'#9B9B9B',fontWeight:'500'}}>{item.name}</Text>
</View>
<Dash style={{height:1}} dashColor="#45AA6F"/>
</TouchableOpacity>)}
}
/>
【问题讨论】:
标签: javascript reactjs react-native ecmascript-6