【问题标题】:React-Native: Back button settings stays on all componentsReact-Native:后退按钮设置保留在所有组件上
【发布时间】:2016-09-09 12:32:51
【问题描述】:

所以目前我有一个小型登录系统。登录后,如果您按返回按钮,它会询问您是否要注销并返回登录页面,唯一的问题是如果您在注销后按登录页面上的返回按钮,它会询问如果你想注销又来了,我如何为每个组件添加一个后退按钮设置?

(我的路由使用 react-native-flux-router)

componentWillMount() {
    this._loadSessionToken().done();
    BackAndroid.addEventListener('hardwareBackPress', function() {
        Alert.alert(
            'Logout',
            'Do you want to log out?',
            [
                {text: 'Yes', onPress: () => Actions.login({text: 'Logout'})},
                {text: 'No'}
            ]
        );
        return true;
    });
};

【问题讨论】:

  • 放一个标志,如果你登录则标志为真,否则标志为假。然后在后退按钮上设置条件后,如果标志为真,则显示对话框。
  • 移除componentWillUnmount()中的事件监听器。
  • 大家好,感谢您的帮助,不幸的是,这些解决方案都不起作用。

标签: javascript android reactjs react-native


【解决方案1】:

在单独的模块中创建处理后退按钮按下的函数。如果您想从注销页面本身中删除事件侦听器,请在 componentWillUnmount 中处理它,如下所示:

function componentWillUnmount() {
  BackAndroid.removeEventListener('hardwareBackPress', fn);
}

如果要从登录页面中删除事件监听器,请导入 fn.并在componentWillMount中处理。

import { fn } from '../common/backpress';

function componentWillMount() {
  BackAndroid.removeEventListener('hardwareBackPress', fn);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-23
    • 2017-12-15
    • 2019-05-14
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    相关资源
    最近更新 更多