reactjs - 在运行 react native 应用程序时出现错误:遇到两个具有相同密钥的孩子
问题描述
我在两个不同的组件中使用相同的代码。我在反应本机代码中遇到错误遇到两个具有相同密钥的孩子,29270
. 密钥应该是唯一的,以便组件在更新时保持其身份。非唯一键可能会导致子项被复制和/或省略——这种行为不受支持,并且可能在未来的版本中发生变化。我该如何解决这个错误我不明白错误是什么以及为什么会发生请帮我解决问题
<SafeAreaView style={styles.container}>
<FlatList data={this.state.dataSource}
renderItem={({item}) =>
<TouchableOpacity style={styles.item} onPress= {() =>this.props.navigation.replace('Test', { StudentUid: item1.uniquecode, AccessToken: this.state.accessToken })} >
<Text style={{fontSize:16, fontWeight:'bold'}}>{item.id} {item.firstname} {item.middlename} {item1.lastname}</Text>
</TouchableOpacity>
}
/>
</SafeAreaView>
can I use like this
<SafeAreaView style={styles.container}>
<FlatList data={this.state.dataSource}
renderItem={({item}) =>
<TouchableOpacity key={item.id} style={styles.item} onPress= {() =>this.props.navigation.replace('Test', { StudentUid: item1.uniquecode, AccessToken: this.state.accessToken })} >
<Text style={{fontSize:16, fontWeight:'bold'}}>{item.id} {item.firstname} {item.middlename} {item1.lastname}</Text>
</TouchableOpacity>
}
/>
</SafeAreaView>
Is this write code?
解决方案
你有两个选择:
- 为您的孩子提供一把
TouchableOpacity
钥匙key={item.id}
- 像这样创建一个 keyExtractor 函数
const keyExtractor = (item) => {
return item.id.toString();
};
Flatlist
并在你的with中定义这个函数keyExtractor={keyExtractor}
推荐阅读
- java - 是否可以在 Watson Java API 中获取从文本到语音的单词计时?
- javascript - 在 Charts Js 中的图表内添加响应式文本
- blazor - 使用参数导航到 Blazor 页面不会呈现布局或任何内容
- angular - StackBlitz 中的错误:“意外的严格模式保留字”尝试将 async/await 与 subscription.toPromise() 一起使用
- wso2 - 沙盒端点创建 API 连接错误
- python - Scikit 学习输出 **predict_proba** 和 **predict.** 的含义
- math - 在 3D 上计算矢量的方向
- php - 方法 Illuminate\Validation\Validator::validateAdmin 不存在
- node.js - 使用引用参数在主对话框中导航
- javascript - 在 fetch().then() 后页面不断刷新,并承诺(e.preventDefault() 已设置)