在 React Native 的 FlatList 上使用数组索引
Using array index on FlatList in React Native
我有一个对象数组,如下所示。 None 个对象具有唯一键。
[
{
data1: "text1",
data2: "text2"
},
{
data1: "text3",
data2: "text4"
}
]
我有一个 FlatList 定义如下:
<FlatList
data={this.state.items}
renderItem={this.renderItem}
/>
我也试过添加:
keyExtractor={this._keyExtractor}
但我仍然收到相同的消息。我不确定上面的 this._keyExtractor
应该做什么。它是拉取索引的内置函数还是我应该自己创建的函数?
我做错了什么,我怎样才能使用数组索引作为我的唯一键?
我想出了一个解决方法:
我必须使用我的项目数组并将唯一索引插入 key
属性 中的每个对象,如下所示:
items.forEach((item, i) => {
item.key = i.toString()
})
一旦加载到状态,我就简单地使用我的原始代码:
<FlatList
data={this.state.items}
renderItem={this.renderItem}
/>
注意:我需要使用toString,否则会出现错误Warning : Failed child context type: Invalid child context 'virtualizedCell.cellKey' of type 'number' supplied to 'CellRenderer', expected 'string'
。使用 toString 后,一切正常。
我相信你从 ReactNative 网站复制了 keyExtractor={this._keyExtractor}
。您忘记将函数复制到您的文件中。
_keyExtractor = (item, index) => item.id;
或者您只需复制函数并粘贴到 keyExtrator
<FlatList
data={this.state.items}
renderItem={this.renderItem}
keyExtractor={(item, index) => item.id}
/>
keyExtractor
已经计算了您提供给它的数据的数组索引。
因此,如果您想使用数组索引作为唯一元素,那么您可以
<FlatList
data={this.state.items}
renderItem={this.renderItem} //... toString() since it accepts string elements
keyExtractor={(item, index) => index.toString()}
/>
keyExtractor={(item) => 'VI' + item.id}
VI 是你想要的任何字符串
我有一个对象数组,如下所示。 None 个对象具有唯一键。
[
{
data1: "text1",
data2: "text2"
},
{
data1: "text3",
data2: "text4"
}
]
我有一个 FlatList 定义如下:
<FlatList
data={this.state.items}
renderItem={this.renderItem}
/>
我也试过添加:
keyExtractor={this._keyExtractor}
但我仍然收到相同的消息。我不确定上面的 this._keyExtractor
应该做什么。它是拉取索引的内置函数还是我应该自己创建的函数?
我做错了什么,我怎样才能使用数组索引作为我的唯一键?
我想出了一个解决方法:
我必须使用我的项目数组并将唯一索引插入 key
属性 中的每个对象,如下所示:
items.forEach((item, i) => {
item.key = i.toString()
})
一旦加载到状态,我就简单地使用我的原始代码:
<FlatList
data={this.state.items}
renderItem={this.renderItem}
/>
注意:我需要使用toString,否则会出现错误Warning : Failed child context type: Invalid child context 'virtualizedCell.cellKey' of type 'number' supplied to 'CellRenderer', expected 'string'
。使用 toString 后,一切正常。
我相信你从 ReactNative 网站复制了 keyExtractor={this._keyExtractor}
。您忘记将函数复制到您的文件中。
_keyExtractor = (item, index) => item.id;
或者您只需复制函数并粘贴到 keyExtrator
<FlatList
data={this.state.items}
renderItem={this.renderItem}
keyExtractor={(item, index) => item.id}
/>
keyExtractor
已经计算了您提供给它的数据的数组索引。
因此,如果您想使用数组索引作为唯一元素,那么您可以
<FlatList
data={this.state.items}
renderItem={this.renderItem} //... toString() since it accepts string elements
keyExtractor={(item, index) => index.toString()}
/>
keyExtractor={(item) => 'VI' + item.id}
VI 是你想要的任何字符串