React native React导航推送多个屏幕
我正在尝试在我的React native项目中使用简单的导航。当导航到屏幕A到B,然后使用android后退按钮返回时,下一次导航到A到B,然后B到C时。React navigator按下多个C屏幕。任何想法都很好。干杯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}, }, {
//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的超时逻辑。你的解决方案是什么。