从FlatList组件将数据传递到屏幕

妖魔

我创建了一个名为AchievementBlock的自定义组件,如下所示:

import React from 'react';
import { View, StyleSheet, Image, TouchableOpacity } from 'react-native';

const AchievementBlock = ({ onPress }) => {
    return (
        <TouchableOpacity onPress={onPress}>
            <View style={styles.AchievmentBlockStyle}>
                <Image source={require('../../assets/images/Placeholder_Achievement.png')} />
            </View>
        </TouchableOpacity>
    )
}

并使用以下数据将该组件用作我的UserProfileScreen中的FlatList:

const tournaments = [
    { title: 'Tournament Title #1', placement: '2nd', desc: 'Description Here', logo: require('../../assets/images/TournamentLogo.png') },
    { title: 'Tournament Title #2', placement: '1st', desc: 'Description Here', logo: require('../../assets/images/TournamentLogo.png') },
    { title: 'Tournament Title #3', placement: '3rd', desc: 'Description Here', logo: require('../../assets/images/TournamentLogo.png') },
]

然后,我返回如下:

return (
<View style={styles.container}>
<FlatList
 data={tournaments}
 numColumns={3}
 keyExtractor={(tournaments) => {tournaments.title}}
 renderItem={({ item }) => {
   return (
   <AchievementBlock
   title={item.title}
   placement={item.placement}
   onPress={() => navigation.navigate('Achievement')}/>
   )
 }}                        
 />
</View>
)

现在,我停留在单击时将每个渲染的FlatList项目的数据拖到新屏幕。

出版时将是这样的:

onPress={() => navigation.navigate('Achievement', {item.title, item.placement, item.logo, item.desc})}

但这是行不通的,而且我仍然是React Native的初学者,我似乎无法找到通过普通Navigation.getParam()函数将每个项目数据拖到该屏幕的解决方案。

我在做错什么,如何在最佳实践中做到这一点?

丹尼斯·蔡

您在正确的道路上,因为React Navigationv5使用了Navigation功能。

但是,您在params参数中传递项目的键/值的方式不正确。

尝试用以下方法解构

onPress={
  () => navigation.navigate('Achievement', { ...item })
}

或明确地传递键(如果您打算设置键/值)

onPress={
  () => navigation.navigate('Achievement', { 
    title: item.title,
    logo: item.logo,
    placement: item.placement,
    desc: item.desc
  })
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将数据传递到Angular 2.0组件

来自分类Dev

Angular2:将数据传递到子组件

来自分类Dev

将更新的数据传递到根组件

来自分类Dev

将数据传递到React Native中的组件?

来自分类Dev

vue js将数据传递到组件

来自分类Dev

AEM-如何将数据传递到组件

来自分类Dev

将数据传递到可以多次调用的子组件

来自分类Dev

将数据传递到组件Vue.js

来自分类Dev

使用React钩子将数据传递到同级组件?

来自分类Dev

将数据传递到相同组件之一

来自分类Dev

将数据传递到根Vue类组件

来自分类Dev

使用kefirjs将数据传递到React组件

来自分类Dev

如何将数据传递到Vuestrap模式组件

来自分类Dev

Vue将数据传递到子组件

来自分类Dev

将数据传递回组件

来自分类Dev

将数据传递给父组件

来自分类Dev

如何使用Nebular对话框组件将数据传递到Angular组件?

来自分类Dev

如何将数据传递给组件到另一个组件

来自分类Dev

在将动作分派给Vuex之后如何将数据传递到组件?

来自分类Dev

将数据传递到屏幕时的Navigator.push()与Navigator.pushNamed()

来自分类Dev

在flutter中使用StreamBuilder时将数据传递到下一个屏幕

来自分类Dev

React Native:将useState()数据传递到不相关的屏幕

来自分类Dev

将数据传递到Vue模板

来自分类Dev

将数据传递到范围

来自分类Dev

将数据传递到Polymer元素

来自分类Dev

Laravel将数据传递到路由

来自分类Dev

将数据传递到ScalaFX JFXApp

来自分类Dev

从UIVIewController将数据传递到SKScene

来自分类Dev

SwiftUI将数据传递到ViewModel