В приведенном ниже коде показаны 2 функции, которые ДОЛЖНЫ отображать компоненты на экране. Когда я отображаю массив, компоненты отображаются. Проблема в том, что когда я пытаюсь отобразить массив в объекте в массиве, компоненты не будут отображаться.
Итак, давайте представим, что у нас есть этот набор данных:
const categories = [
{
title: "Burgers",
items: [
{
item_number: 0,
name: "Cheese Burgers"
},
{
item_number: 1,
name: "Double Cheese Burgers"
},
{
item_number: 2,
name: "Triple Cheese Burgers"
}
]
}
];
И тогда у нас есть эта функция рендеринга:
render() {
const { backgroundImage, menuIndex } = this.props.screenProps;
return (
<View>
{/*THIS DOES RENDER*/}
{categories ? (
categories.map((category, i) => (
<Card key={i} image={backgroundImage}>
<Text style={{ marginBottom: 10 }}>{category.title}</Text>
</Card>
))
) : (
<ActivityIndicator style={styles.center_screen} />
)}
{/*THIS DOES NOT RENDER*/}
{categories ? (
categories[menuIndex].items.map((item, i) => {
<View key={i}>
{console.warn(item.name)}
<Text>{item.name}</Text>
</View>;
})
) : (
<ActivityIndicator style={styles.center_screen} />
)}
</View>
);
}
}
Переменная «категории» вызывается из API, и пока он находится в пути, отображается индикатор активности. Когда он не нулевой, я могу отображать массив и отображать текст каждого объекта. Однако, когда я пытаюсь отобразить массив в объекте массива, я не могу отобразить текст на экране. Когда я записываю предупреждение на экран, я вижу «item.name», но не в текстовом компоненте.
Как и почему это происходит?