Maison > Questions et réponses > le corps du texte
P粉7887656792023-08-18 14:54:31
Ce que vous souhaitez faire est plus adapté à une architecture d'application d'une seule page dans laquelle vous disposez d'un seul conteneur principal contenant un contenu changeant en fonction de la navigation. Cependant, React Navigation est conçu pour empiler les écrans et naviguer entre eux.
Vous pouvez créer un composant de navigation personnalisé, appelons-le NavigationContainer
, qui contient le contenu changeant. Ce composant gérera la page actuellement affichée et restituera le contenu en conséquence, similaire à ceci :
const NavigationContainer = () => { const [currentPage, setCurrentPage] = useState('Home'); // 默认页面 const navigateTo = (page) => { setCurrentPage(page); }; const renderContent = () => { switch (currentPage) { case 'Home': return <HomeContent />; case 'Profile': return <ProfileContent />; // 添加更多不同页面的情况 default: return null; } }; return ( <View style={{ flex: 1 }}> <CustomNavBar navigateTo={navigateTo} /> {renderContent()} </View> ); }; export default NavigationContainer;
CustomNavBar
est un autre composant qui contient des boutons ou des liens pour chaque page. CustomNavBar
是另一个包含每个页面按钮或链接的组件。
当按下按钮/链接时,它将调用navigateTo
函数,该函数从其父组件即NavigationContainer
接收为props,以更新那里的currentPage
Lorsqu'un bouton/lien est enfoncé, il appelle la fonction navigateTo
qui est reçue comme accessoire de son composant parent, c'est-à-dire
currentPage
: const CustomNavBar = ({ navigateTo }) => { return ( <View> <TouchableOpacity onPress={() => navigateTo('Home')}> <Text>Home</Text> </TouchableOpacity> <TouchableOpacity onPress={() => navigateTo('Profile')}> <Text>Profile</Text> </TouchableOpacity> // 添加更多按钮/链接以供其他页面使用 </View> ); }; export default CustomNavBar;
Vous devez mettre en œuvre des liens profonds pour une meilleure navigation basée sur les URL, qui permettront aux utilisateurs de naviguer directement vers une page spécifique à l'aide d'une URL. De plus, vous devrez gérer manuellement le routage, les animations et les transitions si nécessaire.