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

时间:2018-08-27 14:55:49

标签: reactjs react-native react-navigation

我已经花了很多时间搜索并尝试使用其他方法来禁用“用户”登录后的返回功能,但它似乎表明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不是一个函数(正在评估'_reactNavigation.NavigationActions .......),因此它甚至无法编译。我有最新版本的React-navigation(2.12.0)。

1 个答案:

答案 0 :(得分:4)

首先,reset动作不在NavigationActions内部,因此您必须将NavigationActions.reset更改为StackActions.resetdocs here)。

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