我想知道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>
)}
/>
答案 0 :(得分:0)
我想知道KeyExtrator是否有助于维护唯一列表? 否是答案
说明: 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无法做到这一点。在https://reactjs.org/docs/lists-and-keys.html处了解更多关于React Key的信息,在https://facebook.github.io/react-native/docs/flatlist#keyextractor处了解KeyExtractor的信息