使用 react-navigation 禁用返回 react-native

Posted

技术标签:

【中文标题】使用 react-navigation 禁用返回 react-native【英文标题】:Disable going back in react-native using react-navigation 【发布时间】:2019-02-02 03:35:16 【问题描述】:

我已经花了很多时间搜索并尝试不同的东西来禁用“用户”登录后的返回,但它表明 NavigationActions 不起作用。这是代码:

import  NavigationActions  from 'react-navigation';

const actionToDispatch = NavigationActions.reset(
    index: 0,
    actions: [NavigationActions.navigate('DrawerNavigator')] // Array!
  )

export default class LoginScreen extends React.Component 
    constructor(props) 
        super(props);
      


  render() 

    return (
        <RkAvoidKeyboard
        style=styles.screen
        onStartShouldSetResponder= (e) => true
        onResponderRelease= (e) => Keyboard.dismiss()>
        <View style=styles.content>
            <Button title="Complete Login" onPress=()=>this.props.navigation.dispatch(actionToDispatch)/>
          </View>
      </RkAvoidKeyboard>
    );
  

我缩小了一点代码。发生的事情是调度操作不起作用。而且我得到了错误: undefined is not a function(evalating '_reactNavigation.NavigationActions ....) 所以它甚至没有编译。我有最新版本的 React-navigation(2.12.0)。

【问题讨论】:

【参考方案1】:

首先,reset 动作不在NavigationActions 内部,所以你必须将NavigationActions.reset 更改为StackActions.reset (docs here)。

在这种情况下我要做的是StackActions.replace 而不是NavigationActions.navigatereplace 所做的就像卸载当前视图并安装给定的视图,因此当用户想要从第一个屏幕(登录)goBack() 时,它会退出应用程序而不是导航回 Login

【讨论】:

以上是关于使用 react-navigation 禁用返回 react-native的主要内容,如果未能解决你的问题,请参考以下文章

在反应导航中禁用后退按钮

在React Native iOS中是否可以有条件地禁用滑动以返回手势?

使用react-navigation返回上一页面怎么刷新页面

react-navigation 启用滑动以返回 android

React-navigation物理返回键提示效果BackHandler

react-navigation withNavigation 返回 undefined