React native 使用不同的参数返回同一路线

React native 使用不同的参数返回同一路线,react-native,react-navigation,React Native,React Navigation,我使用名为“User”的React导航屏幕来显示特定用户的信息。当导航到此路径时,我传递参数“id”,它告诉屏幕它正在处理什么用户。查看一个用户时,可以单击一些可以让您查看另一个用户的内容 目前,这项功能正常,新参数会显示其他用户的详细信息。问题在于,它不会为其他用户导航到新屏幕,而只是更改当前屏幕。问题是,当您返回时,它不会将您带到初始用户的屏幕,而是带到它之前的任何屏幕。你也没有得到你导航的视觉线索 因此,我想知道如何强制它导航到同一路线的另一个版本 如果有什么不同,我将使用Redux并通过

我使用名为“User”的React导航屏幕来显示特定用户的信息。当导航到此路径时,我传递参数“id”,它告诉屏幕它正在处理什么用户。查看一个用户时,可以单击一些可以让您查看另一个用户的内容

目前,这项功能正常,新参数会显示其他用户的详细信息。问题在于,它不会为其他用户导航到新屏幕,而只是更改当前屏幕。问题是,当您返回时,它不会将您带到初始用户的屏幕,而是带到它之前的任何屏幕。你也没有得到你导航的视觉线索

因此,我想知道如何强制它导航到同一路线的另一个版本

如果有什么不同,我将使用Redux并通过调度生成的操作进行导航,如:


NavigationActions.navigate({routeName:'User',params:{userId}})
您要查找的是推送而不是导航。使用“导航”时,它会查找具有该名称的路由,如果存在,则导航到该路由。使用push时,您将转到一个新路由,向堆栈中添加一个新导航

请参阅此处的文档

在您的情况下,您应该:

NavigationActions.push({ routeName: 'User', params: {userId} }) 
或者通过您的道具(确保您的道具具有“导航”):

导航到同一路线

const navigateAction = NavigationActions.navigate({
    routeName: 'User', 
    params: {userId},
    key: 'APage' + APageUUID
});

this.props.navigation.dispatch(navigateAction);

APageUUID
只是一个唯一的页面id,可以使用
Math.random()*10000


实际上,应该使用
推送
功能,而不是
导航

import*as React from'React';
从“react native”导入{按钮、视图、文本};
从'@react-navigation/native'导入{NavigationContainer};
从'@react navigation/stack'导入{createStackNavigator};
常量主屏幕=({navigation})=>(
主屏幕
navigation.navigate('Details')}
/>
);
const DetailsScreen=({navigation})=>(
详细信息屏幕
navigation.push('Details')}//push而不是navigate
/>
);
const Stack=createStackNavigator();
常量应用=()=>(
);
导出默认应用程序;

测试它

@AbdulRauf我想问题是我试图导航到一个路径,它只是TabNavigator中的另一个选项卡,如果该TabNavigator已经打开,那么它认为我只是想切换选项卡。是的,我已经找到了答案。还请注意,StackActions提供了更高级的操作,包括重置堆栈的选项,这非常有用。谢谢,这有助于我更新:
const navigateAction = NavigationActions.navigate({
    routeName: 'User', 
    params: {userId},
    key: 'APage' + APageUUID
});

this.props.navigation.dispatch(navigateAction);
this.props.navigation.navigate({
    routeName: 'User', 
    params: {userId},
    key: 'APage' + APageUUID
});