平面列表不维护唯一列表



我想知道KeyExtrator是否有助于维护唯一列表?如果是的话,那对我一点帮助都没有。

当一个新项目出现时,我试图在平面列表中显示元素,列表只是添加它,而不检查列表的唯一性

主要目标是使我的列表独一无二,我尝试过ListView,它很有效由于使用rowHasChanged方法实现的逻辑。请尝试查看FlatList是否有任何内容。

constructor(props) {
super(props);
this.state = {
TESTDATA: [{
BarCode: '1',
StopAddress: 'Label 1'
}]
};
};
onReceivedMessage(messages) {
var jsondata = JSON.parse(messages)
var dataTest = this.state.TESTDATA;
var Data = addressToDataMap.get(dataTest.BarCodes);
dataTest.push(jsondata);
this.setState({
TESTDATA: dataTest
});
}

<FlatList
extraData={this.state}
data={this.state.TESTDATA}
keyExtractor={(item, index) => item.BarCode.toString()}
renderItem={({ item}) => (
<Text style={styles.baseText}>
Stop Address: {item.StopAddress}{'n'}
Barcodes:    {item.BarCode}
</Text>
)}
/>

我想知道KeyExtrator是否有助于维护唯一列表NO是答案

说明:keyExtractor告诉列表使用反应键的id,而不是默认键属性。按键有助于React识别哪些项目已更改、添加或删除。密钥也用于缓存和作为跟踪项目重新排序的反应密钥。这些独特的密钥允许VirtualizedList(这就是FlatList的构建基础(跟踪项目,并且在效率方面非常重要。默认情况下,keyExtractor会返回到使用索引。例如

<FlatList
style={{}}
data={this.state.FeedDataCollection}
keyExtractor={(item, index) => item.key}
renderItem={(rowData) =>this.RenderFeedCard(rowData)}
/>

这里item.key是关键。因此,如果您想要基于唯一性的显示元素,您必须为此编写一个逻辑。keyExtractor无法做到这一点。点击此处了解有关React Keys的更多信息https://reactjs.org/docs/lists-and-keys.html和KeyExtractorhttps://facebook.github.io/react-native/docs/flatlist#keyextractor

最新更新