javascript - React Native Drawer Navigation - 如何为同一屏幕获得不同的渲染?
问题描述
我一直在尝试让我的抽屉导航指向同一屏幕上的不同渲染,具体取决于按下的按钮(Nibbles、Starters、Mains 或 Desserts)。正如您在下面的代码中看到的,这些都指向同一个 IndividualCourse.js;我的想法是我只想要一个屏幕来呈现 Nibbles 或 Starters 等......在有条件的情况下。但是如何通过抽屉式导航获得 onpress ID?
import React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { createDrawerNavigator } from '@react-navigation/drawer';
import MainMenu from '../views/MainMenu';
import About from '../views/About';
import IndividualCourse from '../views/IndividualCourse';
import AddActivity from '../views/AddActivity';
import IndividualActivity from '../views/IndividualActivity';
const Drawer = createDrawerNavigator();
const HomeNavigator = () => (
<Drawer.Navigator>
<Drawer.Screen name="Menu" component={MainMenu} />
<Drawer.Screen name="About" component={About} />
<Drawer.Screen name="Nibbles" component={IndividualCourse} />
<Drawer.Screen name="Starters" component={IndividualCourse} />
<Drawer.Screen name="Mains" component={IndividualCourse} />
<Drawer.Screen name="Desserts" component={IndividualCourse} />
<Drawer.Screen name="Create a Recipe" component={AddActivity} />
</Drawer.Navigator>
);
export const DrawerNavigator = () => (
<NavigationContainer>
<HomeNavigator />
</NavigationContainer>
);
要显示的数据是从外部 Mongo DB 调用的,如果我按下 Nibbles Drawer 按钮,它将调用 apiData.Nibbles?
import React, { useEffect, useState } from 'react';
import { useNavigation } from '@react-navigation/native';
import {
StyleSheet, Text, View, Button, Alert, FlatList, ActivityIndicator,
} from 'react-native';
import Header from '../components/Header';
import CourseHeader from '../components/CourseHeader';
function buildItem(item) {
console.log(item)
return (
<View >
<Text>{item.item.name}</Text>
</View>
);
}
export default function IndividualCourse() {
const navigation = useNavigation();
const [isLoading, setLoading] = useState(true);
const [apiData, setApiData] = useState([]);
useEffect(() => {
fetch('http://localhost:3000/activities')
.then((response) => response.json())
.then((json) => setApiData(json))
.catch((error) => console.error(error))
.finally(() => setLoading(false));
}, []);
return (
<View style={styles.container}>
<Header />
<CourseHeader />
<Text>this is where the full list of appetisers could go. a little mini menu. maybe also a blurb about what the appetiser category means in terms of activity size</Text>
<View style={styles.activityList}>
<FlatList
data={apiData.nibbles}
renderItem={buildItem}
keyExtractor={(item) => item._id}
/>
</View>
<Button
title="Back to the Main Menu"
onPress={() => navigation.navigate('MainMenu')}
/>
</View>
);
}
对此的任何帮助将不胜感激。
解决方案
推荐阅读
- ansible - 人们通常如何处理记录直到循环而不在控制台/或 ansible 主日志上生成太多日志记录?
- java - UnknownHostException:从 Jedis 切换到 Redisson 后 6 次查询后无法解析“my-redis-host”
- javascript - 在每个组件上调用的用户 api
- machine-code - 如何查看和编辑例如图像文件的机器代码?
- node.js - 如何使用 Garmin 集成 OAuth 登录以响应本机应用程序?
- symfony - 现有模式的多对多关系表的字段名称
- python - 向量化在 Numpy 中的多维数组中查找点集的中心
- python - 尝试使用 API 调用抓取网站
- swift - 应用程序终止时 WKWebView 关闭用户会话
- sql-server - 在 Select 子句中删除 Where 子句?