Impossible d'afficher le composant personnalisé React Native Expo
P粉022723606
2023-08-13 09:58:33
<p>Je suis un débutant et je n'arrive pas à comprendre pourquoi l'un de mes composants personnalisés apparaît mais pas l'autre. </p>
<p>Écran d'accueil : </p>
<pre class="brush:php;toolbar:false;">importer React depuis 'react';
importer {View, Text} depuis 'react-native' ;
importer { SafeAreaView } depuis 'react-native-safe-area-context' ;
importer { ScrollView, TouchableOpacity } depuis 'react-native-gesture-handler' ;
importer { DrawerActions } depuis '@react-navigation/native' ;
importer des Ionicons depuis '@expo/vector-icons/Ionicons' ;
import { useGrid } from '../context/gridProvider' ; // Fournisseur de contexte
importer l'examen depuis '../components/Exam' ;
importer l'horloge depuis '../components/clock' ;
const Accueil = ({navigation}) =>
const {checkedItems, setCheckedItmes} = useGrid()
retour (
<SafeAreaView style={{flex:1}}>
<Style ScrollView={{padding:20}}>
<View style={{flexDirection : 'row', justifierContent : 'espace-entre', marginBottom:20,}}>
<Style de texte={{fontSize : 16, fontWeight : 700}}></Text>
<Text style={{fontSize : 32, fontWeight : 700, color:'#444'}}>L'examen d'aujourd'hui</Text>
<TouchableOpacity onPress={() => navigation.dispatch(DrawerActions.openDrawer())}>
<Ionicons name="menu" size={32} color="#333" />
</TouchableOpacity>
</Afficher>
<Horloge /> // L'horloge est affichée
<Exam /> // La liste des examens ne s'affiche pas
</ScrollView>
</SafeAreaView>
)
}
exporter la page d'accueil par défaut</pre>
<p>L’horloge est affichée, mais pas l’examen.</p>
<p>Composants de l'examen :</p>
<pre class="brush:php;toolbar:false;">importer React depuis 'react';
importer {View, Text, StyleSheet} depuis 'react-native' ;
importer { useGrid } depuis '../context/gridProvider' ;
importer examData depuis '../data/trialData' ;
const Exam = () =>
const {checkedItems, setCheckedItmes} = useGrid();
checkItems.forEach((key) => {
console.log(examData[key-1].title);
retour(
<View style={{flex:1, alignItems : 'center', marginTop : 100, flexDirection : 'row'}}>
<Style de texte={{color : '#333'}}>{examData[key-1].title}</Text>
<Texte>{examData[key-1].startTime}</Text>
<Texte>{examData[key-1].endTime}</Text>
</Afficher>
)
});
}
exporter l'examen par défaut</pre>
<p> (Remarque : mon premier ID d'objet est 1, pas zéro, donc soustrayez 1 de la valeur clé) </p>
<p>J'utilise le contexte pour gérer la disponibilité globale afin de déterminer quels examens sont sélectionnés dans une liste sur un autre écran. </p>
<p>Lorsque vous sélectionnez un examen dans la liste, l'instruction <code>console.log(examData[key-1].title);</code> envoie les informations correctes au terminal, à l'exception du horloge. Sinon, rien ne s’affiche dans l’application. </p>
<p>J'ai essayé de supprimer le composant horloge pour l'empêcher de déplacer la liste hors de la page. </p>
<p>Est-ce que quelqu'un sait ce que j'ai fait de mal...</p>
La fonction Exam renvoie toujours undéfini car forEach renvoie undéfini.
Solution : utilisez map au lieu de forEach.