React native React Navigation-自动为堆栈导航器屏幕调用goBack()

React native React Navigation-自动为堆栈导航器屏幕调用goBack(),react-native,react-redux,react-navigation,React Native,React Redux,React Navigation,抽屉导航器中有3个堆栈导航器屏幕(主屏幕、项目列表、项目详细信息->相同顺序),所有三个屏幕都通过connect()助手连接到redux商店 当我从ItemList进行导航('ItemDetail')时,它会导航到屏幕并立即返回ItemList屏幕。我不知道为什么。 以下是我的导航结构- const AppStack = createStackNavigator( { Home: { screen: HomeScreen }, ItemList: {

抽屉导航器中有3个堆栈导航器屏幕(主屏幕、项目列表、项目详细信息->相同顺序),所有三个屏幕都通过connect()助手连接到redux商店

当我从ItemList进行
导航('ItemDetail')
时,它会导航到屏幕并立即返回ItemList屏幕。我不知道为什么。

以下是我的导航结构-

const AppStack = createStackNavigator(
  {
    Home: {
      screen: HomeScreen
    },
    ItemList: {
      screen: ItemListScreen
    },
    ItemDetail: {
      screen: ItemDetailScreen
    }
  },
  {
    initialRouteName: 'Home'
  }
);

const DrawerNav = createDrawerNavigator(
  {
    DrawerApp: AppStack
  },
  {
    drawerPosition: 'right'
  }
);

const SwitchStack = createSwitchNavigator(
  {
    Loading: Loading,
    Auth: AuthStack,
    App: DrawerNav
  },
  {
    initialRouteName: 'Loading'
  }
);
这是我的每个导航屏幕组件的外观-

export class ProviderListScreen extends Component {
  render() {
    const { navigation } = this.props;
    // ItemList is hooked up to Redux via connect() helper
    return <ItemList navigation={navigation} />; 
  }
我不确定是什么导致了这种行为。如果我删除ItemList屏幕并直接从主屏幕跳转到ItemDetail屏幕,则不会发生此问题


非常感谢您的帮助。

我遇到了完全相同的问题,但我尝试了Awadhoot在原始帖子评论部分给出的答案,但这对我不起作用

对于仍试图解决此问题的任何人,请确保没有设置任何重复间隔。因此,在离开之前,应始终清除间隔:

clearInterval(this.intervalId);

在react navigation 5中,您可以使用
useIsFocused
钩子:

import { useIsFocused } from '@react-navigation/native';

// ...

function Profile() {
  const isFocused = useIsFocused();

  return <Text>{isFocused ? 'focused' : 'unfocused'}</Text>;
}
从'@react-navigation/native'导入{useIsFocused};
// ...
函数配置文件(){
const isFocused=useiscocused();
返回{isFocused?'focused':'unfocused'};
}

从文档中:

您可以发布您的ItemDetail代码,特别是componentDidMount吗?@dols3m更新了问题,恐怕这仍然没有给出问题的来源。首先,在您的代码中(跨所有组件)是否有任何地方可以使用back/goBack函数?其次,是让react navigation管理自己的状态,还是它也连接到Redux?好的,所以我在代码中的任何地方都没有使用goBack()(使用默认行为),导航有自己的状态,没有连接到Redux。好的,所以我找到了解决这个问题的方法。以前,我从主屏幕通过route param传递ItemList所需的数据。从ItemList到itemtail-like导航(nextScreen,params)以及在下一个屏幕中访问like-navigation.getParam(paramName)也做了同样的事情。我删除了整个“passingbyparams”链,并使用redux保留状态并通过mapstatetops传递。这让它起作用了。将路由参数传递到下一(n)个堆栈导航屏幕是否有任何限制?
import { useIsFocused } from '@react-navigation/native';

// ...

function Profile() {
  const isFocused = useIsFocused();

  return <Text>{isFocused ? 'focused' : 'unfocused'}</Text>;
}