React native React Native Flatlist单项选择器无法在呈现不同组件时更新组件网
您好,我发布了一个与此类似的代码,但有不同的错误,但我已将其修复。我想制作一个Flatlist单项选择器。itemUnselected样式运行良好,但当我按下图像时,我无法将其更新为itemSelected,并且我收到一条警告,提示“无法更新组件”。您能帮我更新onPress吗。边框未选中时为黑色,按时不更新。我是React Native的新手,所以我正在等待您的帮助:)React native React Native Flatlist单项选择器无法在呈现不同组件时更新组件网,react-native,react-native-flatlist,use-state,React Native,React Native Flatlist,Use State,您好,我发布了一个与此类似的代码,但有不同的错误,但我已将其修复。我想制作一个Flatlist单项选择器。itemUnselected样式运行良好,但当我按下图像时,我无法将其更新为itemSelected,并且我收到一条警告,提示“无法更新组件”。您能帮我更新onPress吗。边框未选中时为黑色,按时不更新。我是React Native的新手,所以我正在等待您的帮助:) import React,{useState}来自“React”; 进口{ 样式表, 文本, 看法 章节列表, 安全区域视图
import React,{useState}来自“React”;
进口{
样式表,
文本,
看法
章节列表,
安全区域视图,
形象,,
平面列表,
状态栏,
可触摸不透明度
}从“反应本机”;
导出默认值()=>{
const[selectedID,setSelectedID]=useState(“1”);
常量ListItem=({item})=>{
返回(
setSelectedID(item.id)}>
{item.text}
);
};
返回(
(
{section.title}
{section.horizontal(
}
showshorizontalscrolindicator={false}
/>
):null}
)}
renderItem={({item,section})=>{
如果(横截面){
返回null;
}
返回;
}}
/>
);
};
常量联盟=[
{
标题:“”,
对,,
数据:[
{
id:'1',
文字:“青铜1”,
uri:'https://lolyama.com/wp-content/uploads/2018/11/Season_2019_-_Bronze_1.png',
},
{
id:'2',
文字:“青铜2”,
uri:'https://lolyama.com/wp-content/uploads/2018/11/Season_2019_-_Bronze_1.png',
},
{
id:'3',
文字:“青铜3”,
uri:'https://lolyama.com/wp-content/uploads/2018/11/Season_2019_-_Bronze_1.png',
},
{
id:'4',
文字:“青铜4”,
uri:'https://lolyama.com/wp-content/uploads/2018/11/Season_2019_-_Bronze_1.png',
},
{
id:'5',
文字:“银色1”,
uri:'https://img.rankedboost.com/wp-content/uploads/2014/09/Season_2019_-_Silver_1.png',
},
],
}]
const styles=StyleSheet.create({
容器:{
弹性:1,
背景颜色:“白色”,
},
章节标题:{
重量:'800',
尺码:18,
颜色:“#F4”,
玛金托普:250,
},
项目:{
差额:10,
},
项目照片:{
宽度:80,
身高:80,
边界半径:50
},
项目文本:{
颜色:'黑色',
玛金托普:5,
边缘左侧:15
},
所选项目:{
},
未选择的项目:{
边框颜色:“黑色”,
边框宽度:2
}
});
import React , {useState} from 'react';
import {
StyleSheet,
Text,
View,
SectionList,
SafeAreaView,
Image,
FlatList,
StatusBar,
TouchableOpacity
} from 'react-native';
export default () => {
const [selectedID,setSelectedID] = useState("1");
const ListItem = ({ item }) => {
return (
<TouchableOpacity onPress = {() => setSelectedID(item.id)}>
<View style={[styles.item , setSelectedID(item.id) ?
styles.itemSelected :
styles.itemUnselected]}>
<Image
source={{
uri: item.uri,
}}
style={styles.itemPhoto}
resizeMode="cover"
/>
<Text style={styles.itemText}>{item.text}</Text>
</View>
</TouchableOpacity>
);
};
return (
<View style={styles.container}>
<StatusBar style="light" />
<SafeAreaView style={{ flex: 1 }}>
<SectionList
contentContainerStyle={{ paddingHorizontal: 10 }}
stickySectionHeadersEnabled={false}
sections={LEAGUES}
renderSectionHeader={({ section }) => (
<>
<Text style={styles.sectionHeader}>{section.title}</Text>
{section.horizontal ? (
<FlatList
horizontal
data={section.data}
renderItem={({ item }) => <ListItem item={item} />}
showsHorizontalScrollIndicator={false}
/>
) : null}
</>
)}
renderItem={({ item, section }) => {
if (section.horizontal) {
return null;
}
return <ListItem item={item} />;
}}
/>
</SafeAreaView>
</View>
);
};
const LEAGUES = [
{
title: '',
horizontal: true,
data: [
{
id: '1',
text: 'Bronze 1',
uri: 'https://lolyama.com/wp-content/uploads/2018/11/Season_2019_-_Bronze_1.png',
},
{
id: '2',
text: 'Bronze 2',
uri: 'https://lolyama.com/wp-content/uploads/2018/11/Season_2019_-_Bronze_1.png',
},
{
id: '3',
text: 'Bronze 3',
uri: 'https://lolyama.com/wp-content/uploads/2018/11/Season_2019_-_Bronze_1.png',
},
{
id: '4',
text: 'Bronze 4',
uri: 'https://lolyama.com/wp-content/uploads/2018/11/Season_2019_-_Bronze_1.png',
},
{
id: '5',
text: 'Silver 1',
uri: 'https://img.rankedboost.com/wp-content/uploads/2014/09/Season_2019_-_Silver_1.png',
},
],
}]
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: 'white',
},
sectionHeader: {
fontWeight: '800',
fontSize: 18,
color: '#f4f4f4',
marginTop: 250,
},
item: {
margin: 10,
},
itemPhoto: {
width: 80,
height: 80,
borderRadius:50
},
itemText: {
color: 'black',
marginTop: 5,
marginLeft:15
},
itemSelected:{
},
itemUnselected:{
borderColor:"black",
borderWidth:2
}
});