Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native React导航推送多个屏幕_React Native_React Navigation - Fatal编程技术网

React native React导航推送多个屏幕

React native React导航推送多个屏幕,react-native,react-navigation,React Native,React Navigation,我正在尝试在我的React native项目中使用简单的导航。当导航到屏幕A到B,然后使用android后退按钮返回时,下一次导航到A到B,然后B到C时。React navigator按下多个C屏幕。任何想法都很好。干杯 //stack navigator const StackScreense = StackNavigator({ A: { screen: A}, B: { screen: B}, C: { screen: C}, }, {

我正在尝试在我的React native项目中使用简单的导航。当导航到屏幕A到B,然后使用android后退按钮返回时,下一次导航到A到B,然后B到C时。React navigator按下多个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
    });

我使用socket.io导航时忘记卸载侦听器。这就是问题所在

我使用socket.io导航时忘记卸载侦听器。这就是问题所在

如果您正在调用
导航
操作,您可以通过编程方式使用以下解决方案来检查下一屏幕路由名称是否与上一屏幕路由名称不相似

这是用于此的中间件

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
)

通过编程,您可以使用以下解决方案来检查下一屏幕路由名称是否与上一屏幕路由名称不相似,前提是您正在调用
导航
操作

这是用于此的中间件

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
)

如果您在一个按钮上添加导航,并多次按下按钮,则会按下多个屏幕。你想要解决这个问题还是我误解了这个问题?这是一个与socket.io相关的问题。谢谢你。我正在使用状态为多个按钮按下tho的超时逻辑。你的解决方案是什么?如果你在一个按钮上添加导航,然后多次按下按钮,就会按下多个屏幕。你想要解决这个问题还是我误解了这个问题?这是一个与socket.io相关的问题。谢谢你。我正在使用状态为多个按钮按下tho的超时逻辑。你的解决方案是什么。