我使用 ReactNative 为iOS和android
构建了一个带有的应用ListView
。当使用有效的数据源填充listview时,屏幕底部将显示以下警告:
警告:数组或迭代器中的每个子代都应具有唯一的“键”道具。检查的渲染方法
ListView
。
此警告的目的是什么?消息后,它们链接到此页面,在此讨论了完整的不同内容,这些内容与react native无关,而与基于Web的reactjs有关。
我的ListView是使用以下语句构建的:
render() {
var store = this.props.store;
return (
<ListView
dataSource={this.state.dataSource}
renderHeader={this.renderHeader.bind(this)}
renderRow={this.renderDetailItem.bind(this)}
renderSeparator={this.renderSeparator.bind(this)}
style={styles.listView}
/>
);
}
我的数据源包含以下内容:
var detailItems = [];
detailItems.push( new DetailItem('plain', store.address) );
detailItems.push( new DetailItem('map', '') );
if(store.telefon) {
detailItems.push( new DetailItem('contact', store.telefon, 'Anrufen', 'fontawesome|phone') );
}
if(store.email) {
detailItems.push( new DetailItem('contact', store.email, 'Email', 'fontawesome|envelope') );
}
detailItems.push( new DetailItem('moreInfo', '') );
this.setState({
dataSource: this.state.dataSource.cloneWithRows(detailItems)
});
并且ListView-Rows用以下内容呈现:
return (
<TouchableHighlight underlayColor='#dddddd'>
<View style={styles.infoRow}>
<Icon
name={item.icon}
size={30}
color='gray'
style={styles.contactIcon}
/>
<View style={{ flex: 1}}>
<Text style={styles.headline}>{item.headline}</Text>
<Text style={styles.details}>{item.text}</Text>
</View>
<View style={styles.separator}/>
</View>
</TouchableHighlight>
);
一切正常,一切正常,除了警告似乎对我毫无意义。
向我的“ DetailItem”类添加密钥属性无法解决问题。
这是由于“ cloneWithRows”的结果真正传递给ListView的原因:
_dataBlob:
I/ReactNativeJS( 1293): { s1:
I/ReactNativeJS( 1293): [ { key: 2,
I/ReactNativeJS( 1293): type: 'plain',
I/ReactNativeJS( 1293): text: 'xxxxxxxxxx',
I/ReactNativeJS( 1293): headline: '',
I/ReactNativeJS( 1293): icon: '' },
I/ReactNativeJS( 1293): { key: 3, type: 'map', text: '', headline: '', icon: '' },
I/ReactNativeJS( 1293): { key: 4,
I/ReactNativeJS( 1293): type: 'contact',
I/ReactNativeJS( 1293): text: '(xxxx) yyyyyy',
I/ReactNativeJS( 1293): headline: 'Anrufen',
I/ReactNativeJS( 1293): icon: 'fontawesome|phone' },
I/ReactNativeJS( 1293): { key: 5,
I/ReactNativeJS( 1293): type: 'contact',
I/ReactNativeJS( 1293): text: 'xxxxxxxxx@hotmail.com',
I/ReactNativeJS( 1293): headline: 'Email',
I/ReactNativeJS( 1293): icon: 'fontawesome|envelope' },
I/ReactNativeJS( 1293): { key: 6, type: 'moreInfo', text: '', headline: '', icon: '' } ] },
就像一个键一样,每个记录都有一个key属性。该警告仍然存在。
我遇到了与您 完全相同 的问题已有一段时间,在查看了上述建议之后,我终于解决了问题。
事实证明(至少无论如何对我来说),我需要为要从renderSeparator方法返回的组件提供一个键(称为“键”的道具)。向我的renderRow或renderSectionHeader添加一个键没有做任何事情,但是将其添加到renderSeparator会使警告消失。
希望有帮助。
问题内容: G’Day。我想遍历一堆JSON对象,然后将它们变成React Elements。对象看起来像这样 遍历它们的代码非常简单。这样: 而且我收到错误警告:数组或迭代器中的每个子代都应具有唯一的“键”属性。有什么提示吗?干杯 我更改了代码以执行此操作。 而且我得到同样的错误。我不明白为什么!固定!谢谢您的帮助。 这是代码。 问题答案: 您需要向React元素添加一个唯一的key prop。
我用ReactNative为iOS和android构建了一个应用程序,它具有。使用有效数据源填充listview时,屏幕底部会显示以下警告: 警告:数组或迭代器中的每个子级都应具有唯一的“键”属性。检查
但这是错误的: 我不知道如何插入“钥匙”
我试图显示一个从服务器获取数据并显示其中所有信息的表。代码正在从获取的API打印我的表标题和第一个对象的信息。 这给了我一个错误。 警告:数组或迭代器中的每个子级都应具有唯一的“键”属性。检查的渲染方法
得到一个警告:列表中的每个孩子都应该有一个唯一的“键”道具。我想不出我需要用哪把钥匙。 我红了反应指南,但它不能帮助我理解如何在我的情况下使用它
向整个社区问好。 我正在做一个项目,在这个项目中,我所在城市的餐馆可以通过这个应用程序放置他们的菜肴并生成订单。 但是我在执行项目时遇到了一个错误。 这就是我犯的错误。 我正在用React本地做我的前端项目。 **我的代码是这个-我的前端** 应用程序。js 餐食 创建一个调用Flatlist操作的列表,并管理列表中的信息。 列表js 获取我的项目的url。 UseFecth.js 我的modal