美文网首页
react-native对android物理返回键back的监听

react-native对android物理返回键back的监听

作者: 我弟是个程序员 | 来源:发表于2017-07-13 11:32 被阅读0次

    这个需求主要是为了解决android端物理返回键的监听的,ios用户请绕道而行。

    先看封装的代码:

    /**
     * 所有组件的基类
     * 实现android端物理返回键的监听
     */
    import React, {Component} from 'react';
    import {
        BackAndroid,
        Platform,
    } from 'react-native';
    
    export default class BaseComponent extends Component {
    
        constructor(props) {
            super(props);
        }
        componentWillMount() {
            if (Platform.OS === 'android') {
                BackAndroid.addEventListener("back", this.onBackClicked);
            }else {
    
            }
        }
    
        componentWillUnmount() {
            if (Platform.OS === 'android') {
                BackAndroid.removeEventListener("back", this.onBackClicked);
            }else {
                this.propstManger.addLengeData(this.props.navigator.getCurrentRoutes().length);
            }
        }
    
        //返回 ;//return  true 表示返回上一页  false  表示跳出RN
        onBackClicked = () => { // 默认 表示跳出RN
            return false;
        }
    
        /*
         //复制此方法到 继承该组件的地方即可 
    
         //BACK物理按键监听
         onBackClicked = () => {
             const {navigator} = this.props;
             if (navigator && navigator.getCurrentRoutes().length > 1) {
                 navigator.pop();
                 return true;//true 表示返回上一页
             }
             return false; // 默认false  表示跳出RN
         }
         */
    
    }
    

    用法如下:

    import React, {Component} from 'react';
    import {
        ...
        Navigator,
        ...
    } from 'react-native';
    import BaseComponent from '文件路径';
    
    export default class Reading extends BaseComponent {
     onBackClicked = () => {
             const {navigator} = this.props;
             if (navigator && navigator.getCurrentRoutes().length > 1) {
                 navigator.pop();
                 return true;//true 表示返回上一页
             }
             return false; // 默认false  表示跳出RN
         }
    }
    

    这样就完成了。为什么会有属性navigator属性,请看巧用导航navigator。结合这一篇文章,navigator的导航问题就基本解决了。

    相关文章

      网友评论

          本文标题:react-native对android物理返回键back的监听

          本文链接:https://www.haomeiwen.com/subject/forwhxtx.html