反应导航会推送多个屏幕

时间:2018-04-13 01:28:29

标签: react-native react-navigation

我正在尝试使用我的React本机项目上的简单导航进行导航。当导航到屏幕A到B然后用Android后退按钮返回时,下次导航A到B然后B到C.反应导航器推送多个C屏幕。任何想法都会很棒。欢呼声。

  //stack navigator 
  const StackScreense = StackNavigator({
    A: { screen: A},
    B: { screen: B},
    C: { screen: C},
   }, {
      initialRouteName: 'A',
      navigationOptions:{ header: null},
      initialRouteParams: { status: ' ' }
    });
  //navigation
  this.props.navigation.navigate('B');

  this.props.navigation.navigate('C', {
      params
    });

2 个答案:

答案 0 :(得分:1)

我正在使用socket.io忘记卸载侦听器。那就是问题所在。

答案 1 :(得分:0)

以编程方式,您可以使用以下解决方案,检查下一个屏幕routeName 是否上一个屏幕routeName 不相似,前提是您正在调用NAVIGATE操作

这是

的中间件
const navigateOnce = getStateForAction => (action, state) => {
  const { type, routeName } = action
  return state &&
    type === NavigationActions.NAVIGATE &&
    routeName === state.routes[state.routes.length - 1].routeName
    ? null
    : getStateForAction(action, state)
}

<强>用法

YourStackRouter.router.getStateForAction = navigateOnce(
  YourStackRouter.router.getStateForAction
)