如何在React Native中将数据从多个屏幕发送到一个屏幕

问题描述 投票:0回答:1

我基本上有四个屏幕,我将数据发送给其他人 屏幕。例如,我将数据从 Home 发送到 ListScreen 来自 flatlist 的一些项目然后我也发送来自 SearchScreen 到 ListScreen 但当我去时出现问题 TabScreen 中的 ListScreen 或者然后它在 {item.name}

上给我错误
 <TouchableOpacity onPress={() => navigation.navigate(MainScreens.ListScreen, {
                     item: item, 
                     })} >
                       
                </TouchableOpacity>

还有

<TouchableOpacity onPress={() => navigation.navigate(MainScreens.ListScreen, {
                     item: item, 
                     totalFixed: totalPrice,
                     })} >
                       
                </TouchableOpacity>

我的问题是如何在 ListScreen 中区分它们 才知道这两个数据是不同的

export const ListScreen: React.FC<ListScreenProps> = ({ route, navigation }) => {
    const { item, totalFixed } = route.params || {};

这里我在 item item.name 中有两种类型的对象和 item.category 但我收到错误 下面我有错误,找不到item.price,因为我带有主屏幕。

 <Text >Total: AED {item.price}</Text>
javascript typescript react-native routes react-navigation-stack
1个回答
0
投票
<TouchableOpacity onPress={() => navigation.navigate(MainScreens.ListScreen, {
                     item: item, 
                     source:'home'
                     })} >
                </TouchableOpacity>

在此处添加源,以便您可以记住屏幕数据

<TouchableOpacity onPress={() => navigation.navigate(MainScreens.ListScreen, {
                         item: item, 
                         source:'searchScreen'
                         })} >
                    </TouchableOpacity>

然后在ListScreen中获取这样的数据

export const ListScreen: React.FC<ListScreenProps> = ({ route, navigation }) => {
const { item, totalFixed, source } = route.params || {};

现在在 ListScreen 中添加您的文本,如下所示

{source === 'home' && (
                        < Text>Total: AED {item.price}</Text >)}
                    {source === 'searchScreen' && (
                        <Text>Total: AED {totalFixed}</Text>)}
© www.soinside.com 2019 - 2024. All rights reserved.