EDIT:
Я нашел ответ на мою проблему здесь:
Реагировать на собственные динамические изображения
У меня есть экран категорий, и для каждой категории я хочу, чтобы изображение отображалось.
Я пытаюсь отобразить изображения в виде плоского списка вместе с названием категории.
Изображения поступают из папки ресурсов, если я жестко закодирую значение источника изображения
source={require("../../assets/image.png")}
Затем отображается изображение, но затем, очевидно, одно и то же изображение отображается для каждого элемента в плоском списке.
(В приведенном ниже примере кода я включил iconSrc только для 2 элементов, так как если я смогу заставить 2 работать, я смогу заставить их всех работать.)
У меня есть 12 изображений в папке ресурсов, по одному для каждой категории.
У меня есть плоские списки в других частях приложения, которые получают изображения из магазина и отображают их нормально, но просто не могу понять, что я делаю здесь неправильно.
Любая помощь будет принята с благодарностью, спасибо!
export default class CategoriesScreen extends Component {
constructor(props) {
super(props);
this.state = {
CategoryItems: [
{key: "All Events", iconSrc: "../../assets/categoryicons/calendar.png"},
{key: "Music", iconSrc: "../../assets/categoryicons/music.png"},
{key: "Food & Drink"},
{key: "Theatre"},
{key: "Charities & Causes"},
{key: "Talk"},
{key: "Health & Wellbeing"},
{key: "Art"},
{key: "Family"},
{key: "Comedy"},
{key: "Sports & Fitness"},
{key: "Other"}
]
};
}
render() {
return (
<View style={styles.container}>
<FlatList
data={this.state.CategoryItems}
renderItem={({item}) => (
<TouchableOpacity
delayPressIn={50}
onPress={this.onCategoryItemClick.bind(this, item.key)}
style={styles.GridViewContainer}>
{/*<Ionicons name={item.iconName} size={80} color="#0075B4" />*/}
<Image
style={{height: 80, width: 80}}
source={{uri: item.iconSrc}}
/>
<Text style={styles.GridViewTextLayout}>{item.key}</Text>
</TouchableOpacity>
)}
numColumns={2}
/>
</View>
);
}
}