javascript - React Native - 将平面列表中所选项目的 id 发送到新屏幕
问题描述
我是 React Native 的新手。我正在将 API 中的数据添加到平面列表中。如何将选定的项目 ID 发送到新屏幕?这是我的主屏幕代码:
import React, { useEffect, useState } from 'react';
import { View, Text, TouchableOpacity } from 'react-native';
import { useThemedValues } from '../Theming';
import getStyles from "./Styles/HomeScreenStyles";
import Axios from '../../API/AxiosConfig'
import { FlatList } from 'react-native-gesture-handler';
import { texts, useLocalization } from "../Localization";
const HomeScreen = (props) => {
const { styles, colors } = useThemedValues(getStyles);
const loc = useLocalization();
const [episodeList, setEpisodeList] = useState([])
useEffect(() => {
Axios.get('episode')
.then(response => {
let episodes = response.data.results
setEpisodeList(episodes)
})
.catch(error => {
console.log(error)
})
}, [])
const _renderEpisodesItem = ({ item }) => {
return (
<TouchableOpacity onPress={({ item }) => {
props.navigation.navigate("episode-detail-screen", {
dummy1: 1,
});
}}>
<View style={styles.episodeButton}>
<Text style={styles.episodeText}>
{loc.t(texts.season)}{item.episode.slice(1, 3)} - {loc.t(texts.episode)}{item.episode.slice(4, 6)}
</Text>
<Text style={styles.episodeNameText} numberOfLines={1}>{item.name}</Text>
</View>
</TouchableOpacity>
)
}
return (
<View style={styles.container}>
<FlatList
data={episodeList}
renderItem={_renderEpisodesItem}
keyExtractor={item => item.id}
style={styles.flatListContainer}
/>
</View>
);
};
export default HomeScreen;
我的目的是在新打开的页面上显示所选部分的信息。
解决方案
你可以像这样发送你的道具:
const _renderEpisodesItem = ({ item }) => {
return (
<TouchableOpacity onPress={() => {
props.navigation.navigate("episode-detail-screen", {
episodeId: item.id,
});
}}>
//...
</TouchableOpacity>
)
}
然后在你的EpisodeScreen
你可以选择这样的:
const {episodeId} = props.route.params
如果您使用 reactnavigation,则无法阅读此https://reactnavigation.org/docs/params/
推荐阅读
- sql - 在 SQL 查询中将 XML 列转换为表数据
- dc.js - 如何使用 geoChoroplethChart 和 dc.js 在 Mapchart 的路径上添加标签或自定义值?
- javascript - 如何使用用户输入生成 .txt 文件
- java - 通过跳过内部循环中的元素来优化冒泡排序
- java - 应用程序运行平稳但构建 peekaboo 集成失败?
- ios - 完成处理程序未处理异步函数
- python - Numpy 数组是可散列的吗?
- typescript - 通过 router.navigate 方法加载组件时未在 NgOnInit 中调用共享服务的方法
- gradle - 解决 Micronaut 和 Gradle 5“检测编译类路径上的注释处理器已弃用”警告的警告
- javascript - 无法检测到用户何时滚动到页面底部