两个 children 在带有 Native Base 的 React Native 中具有相同的键
Two children with the same key in React Native with Native Base
如何修复以下错误:警告:遇到两个 children 使用相同的密钥 [object Object]
。密钥应该是唯一的,以便组件在更新期间保持其身份。 Non-unique 键可能会导致 children 被重复 and/or 省略 — 该行为不受支持,可能会在未来的版本中更改。
这是我的清单:
<List style={custom.PartList}>
<FlatList extraData={this.state} data={this.state.data} keyExtractor={this._keyExtractor.bind(this)} renderItem={this._renderItem.bind(this)} />
</List>
这是我的列表项:
/* Render Item - Render One Row - Item - (Tool) */
_renderItem({ item }) {
const custom = styles(this.props);
return (
<View style={custom.PartView}>
<ListItem style={custom.PartListItem} onPress={() => this._handleRead(item.tool_id, item.tool_name, item.tool_description, item.tool_count, item.tool_availability)}>
<Image style={custom.PartImage} source={require('@app/assets/images/tools.png')}/>
<Text style={custom.PartName}>{item.tool_name}</Text>
</ListItem>
</View>
);
}
/* /Render Item - Render One Row - Item - (Tool)/ */
这就是我的 keyExtractor 方法:
/* Key Extractor Method - For Index Tools */
_keyExtractor(index) {
return index.toString();
}
/* /Key Extractor Method - For Index Tools/ */
您将 this
绑定到 keyExtractor 函数,因此它将提供 this
对象作为第一个参数(您将其称为 index
)。因此 return 值将始终是 Object (= [Object object])
的字符串表示
简单的解决方案是只声明 keyExtractor={this.keyExtractor}
而没有任何绑定。
对于 FlatList 代码
<List style={custom.PartList}>
<FlatList extraData={this.state} data={this.state.data}
keyExtractor={(item, index) => index.toString()}
renderItem={this._renderItem.bind(this)} />
</List>
对我来说,它完全像这样添加:
<FlatList
data={mySkills}
keyExtractor={this.keyExtractor}
renderItem={({item, index}) => <SkillCard key={index} skill={item} />}
/>
如何修复以下错误:警告:遇到两个 children 使用相同的密钥 [object Object]
。密钥应该是唯一的,以便组件在更新期间保持其身份。 Non-unique 键可能会导致 children 被重复 and/or 省略 — 该行为不受支持,可能会在未来的版本中更改。
这是我的清单:
<List style={custom.PartList}>
<FlatList extraData={this.state} data={this.state.data} keyExtractor={this._keyExtractor.bind(this)} renderItem={this._renderItem.bind(this)} />
</List>
这是我的列表项:
/* Render Item - Render One Row - Item - (Tool) */
_renderItem({ item }) {
const custom = styles(this.props);
return (
<View style={custom.PartView}>
<ListItem style={custom.PartListItem} onPress={() => this._handleRead(item.tool_id, item.tool_name, item.tool_description, item.tool_count, item.tool_availability)}>
<Image style={custom.PartImage} source={require('@app/assets/images/tools.png')}/>
<Text style={custom.PartName}>{item.tool_name}</Text>
</ListItem>
</View>
);
}
/* /Render Item - Render One Row - Item - (Tool)/ */
这就是我的 keyExtractor 方法:
/* Key Extractor Method - For Index Tools */
_keyExtractor(index) {
return index.toString();
}
/* /Key Extractor Method - For Index Tools/ */
您将 this
绑定到 keyExtractor 函数,因此它将提供 this
对象作为第一个参数(您将其称为 index
)。因此 return 值将始终是 Object (= [Object object])
简单的解决方案是只声明 keyExtractor={this.keyExtractor}
而没有任何绑定。
对于 FlatList 代码
<List style={custom.PartList}>
<FlatList extraData={this.state} data={this.state.data}
keyExtractor={(item, index) => index.toString()}
renderItem={this._renderItem.bind(this)} />
</List>
对我来说,它完全像这样添加:
<FlatList
data={mySkills}
keyExtractor={this.keyExtractor}
renderItem={({item, index}) => <SkillCard key={index} skill={item} />}
/>