#javascript #reactjs #react-native
#javascript #reactjs #react-native
Вопрос:
Ниже react-native
приведен код, который я использую для отображения текста элементов массива map
.
import React from 'react';
import { createStackNavigator } from '@react-navigation/stack';
import {Card} from 'react-native-elements';
import {View, Text} from 'react-native';
class Contact extends React.Component{
constructor(props){
super(props);
this.state={
arr:["Vipul","Satish","Manisha","Jonty"]
}
}
render(){
return(
<Card>
<Card.Title>Contact Information</Card.Title>
<Card.Divider />
<View>
{
this.state.arr.map(function(elem){
console.log(elem)
return(
<Text>Hello {elem}</Text>
);
})
}
</View>
</Card>
);
}
}
export default Contact;
У меня уже есть настройка массива с состоянием в конструкторе моего класса. Сначала я использовал функцию arrow для возврата <Text>
. Но это не сработало. Теперь обычная функция тоже не работает.
Я получаю сообщение об ошибке ниже:
Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined.
Однако, если я заменю свою функцию рендеринга на это:
render(){
return(<View><Text>Hello world</Text></View>);
}
тогда все работает нормально, и я получаю Hello world на экране. Кроме того, console.log
в приведенном выше коде корректно печатаются все элементы массива, но просто элементы не отображаются.
Я проверил другие темы, похожие на эту, но не смог получить никакой помощи.
Спасибо! Состояние таково:
constructor(props){
super(props);
this.state={
arr:["Vipul","Satish","Manisha","Jonty"]
}
}
Редактировать:
Это то, что было указано на их официальном сайте:
<Card>
<Card.Title>CARD WITH DIVIDER</Card.Title>
<Card.Divider/>
{
users.map((u, i) => {
return (
<View key={i} style={styles.user}>
<Image
style={styles.image}
resizeMode="cover"
source={{ uri: u.avatar }}
/>
<Text style={styles.name}>{u.name}</Text>
</View>
);
})
}
</Card>
Вы можете видеть, что мой код похож на этот, поэтому он должен работать именно так.
Комментарии:
1. Я на 99% уверен, что проблема в вашей государственной структуре. Пожалуйста, разместите это здесь.
2. Если бы это была проблема с состоянием, консолью. в журнале не было бы напечатанных элементов.
3. Состояние кажется правильным. Не могли бы вы опубликовать
<Card />
? Я вижу, что вы визуализируетеCard
, а затемCard.Divider
иCard.Title
т. Д. Как это может быть?4. Я видел это на их официальном сайте.
Ответ №1:
не уверен, для какой библиотеки вы используете Card
, но в качестве дочернего элемента может потребоваться title
prop, а не строка.
Комментарии:
1. Я использую
react-native-elements
для Card2. вы показываете весь код? я подозреваю, что проблема где-то не отображается
3. Я должен сказать, что проблема заключается в самой карте, потому что, как я уже сказал, если я удалю все из рендеринга и просто верну hello world, он работает нормально.
4. смотрите официальные документы react-native card:reactnativeelements.com/docs/card
5. После того, как я почесал голову в течение часа, я обнаружил, что проблема заключается в
<Card.Title>
. Я думаю, что он должен использовать title в качестве реквизита.