react-native - React Native Flatlist 单选渲染错误只读
问题描述
您好,我正在尝试制作单选平面列表。用户将从这里选择他/她在游戏联赛中,但我遇到错误。“selectedID”是只读的。我希望他们选择联赛,并且会有一个按钮保存。我看不到我缺少什么。我研究了它,但找不到任何可以帮助我的东西。
import React , {useState} from 'react';
import {
StyleSheet,
Text,
View,
SectionList,
SafeAreaView,
Image,
FlatList,
StatusBar,
TouchableOpacity
} from 'react-native';
export default () => {
const [selectedID,setSelectedID] = useState(0);
const ListItem = ({ item }) => {
return (
<TouchableOpacity onPress = {() => setSelectedID(item.id)}>
<View style={[styles.item , selectedID = 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:{
}
});
解决方案
据我所知
<View style={[styles.item , selectedID = item.id ?
styles.itemSelected:styles.itemUnselected]}>
您正在将值分配给状态变量
推荐阅读
- hibernate - JPA Hibernate EnableJpaAuditing isUpdateNecessary
- javascript - JavaScript Error: Uncaught TypeError: Cannot set property 'value' of null
- html - 导出为 PDF 时,表格中每一页的结尾行缺少边框底部
- java - OutOfMemoryError:Java 堆空间和 CPU 使用率 100%
- c# - Azure Functions OAuth2 来自存储在数据库中的电子邮件/密码?
- android - 适用于 Android API 16 至 18 的 GCMParameterSpec 或类似版本
- sapui5 - 如何在 WEB IDE 中为较旧的 SAP UI5 项目设置 grunt?
- svg - 内联 SVG 模式水平重复并垂直缩放?
- ruby - Ruby--> 如何设置参数以要求范围
- c++ - NS3 log 时间精度