警告:数组或迭代器中的每个子节点都应该有一个唯一的“键”道具
Warning: Each Child in an Array or Iterator Should Have a Unique “Key” Prop
当我使用选取器项目映射数组时,我收到以下警告:
数组中的每个子节点都应该有一个唯一的"键"道具。
这是我的代码
var locationArray = [{"name":"canada","id":"2"},{"name":"sweden","id":"3"}];
var Locations = locationArray.map(function(result) {
return <Picker.Item label={result.name} value={result.id} /> ;
});
return (
<ScrollView contentContainerStyle={styles.contentContainer}>
<View style={styles.container}>
<Picker selectedValue={this.state.location} onValueChange={(location) => this.setState({location:location})} style={[styles.picker, {color: '#2E3740'}]}>
{Locations}
</Picker>
</View>
</ScrollView>
);
更好的性能
这是 reactjs 的建议,以提高渲染性能。通过为每个动态创建的元素提供一个唯一的键,可以最大限度地减少可能的 DOM 更改。
更新您的代码
使用每个元素的 id 作为唯一键。或者,是否可以使用每个元素的索引。
var locationArray = [{"name":"canada","id":"2"},{"name":"sweden","id":"3"}];
var Locations = locationArray.map(function(result) {
return <Picker.Item key={result.id} label={result.name} value={result.id} /> ;
});
return (
<ScrollView contentContainerStyle={styles.contentContainer}>
<View style={styles.container}>
<Picker selectedValue={this.state.location} onValueChange={(location) => this.setState({location:location})} style={[styles.picker, {color: '#2E3740'}]}>
{Locations}
</Picker>
</View>
</ScrollView>
);
即使我也遇到了相同的警告消息,并且能够通过向返回对象添加唯一键来克服它,如下面的代码所示。
带有警告消息的代码
getBatchList() {
return this.state.availableBatch.map((data) => {
return (
<RadioButton value={data.label}>
<Text style={styles.batchText}>{data.label}</Text>
</RadioButton>
)
})
}
不带警告消息的代码
getBatchList() {
//LIKE THIS
var keyId=1;
return this.state.availableBatch.map((data) => {
return (
<RadioButton value={data.label} key={keyId}>
<Text style={styles.batchText}>{data.label}</Text>
</RadioButton>
)
keyId = keyId+1;
})
}
相关文章:
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 如何在只能有一个asp.net表单的主页上从asp.net页面中的javascript中获取值
- 有可能在来自链接的警报中有一个值吗
- 是否<asp:文本框>有一个onFocusLost事件
- 让谷歌数据图表有一个24小时x轴
- PayPal按钮是否有一个简单的选项,其中金额基于一些用户输入
- 我确实有一个表单,如果用户输入了输入,它应该检查否定或空的输入框,并抛出一条警告消息
- 在这个使用hasOwnProperty的对象扩展程序中有一个错误,I'我不确定那个bug是什么,也不确定这个扩展
- 当知道同一hiearch中至少有一个元素时,遍历到元素.结构使用jquery
- PNG图像被覆盖,但每个图像都有一个链接可以更改,每次一个-Javascript/jQuery/CSS
- JQuery是否有一个“;移动“;作用或者有没有一种更紧凑的方法来做到这一点
- Regex或javascript每X个连续单词中有一个单词
- Jquery时间启动计时器,我有一个计时器的代码,但它在页面加载时启动
- 是否有一个javascript库来解析简单的查询
- 在一个函数中,我有一个未捕获的语法错误:意外的标记else
- 警告:数组或迭代器中的每个子节点都应该有一个唯一的“键”道具
- 如何将用户名附加到我的 ./profile/
URL 中,以便每个用户都有一个唯一的页面.-意思 - - 是否有一种更简单的方法来使用lodash从多个对象集合中构造一个唯一值的数组?
- 数组或迭代器中的每一个子元素都应该有一个唯一的“键”.道具
- 有没有任何方法可以为html中的每个元素指定一个唯一的变量