zoukankan      html  css  js  c++  java
  • react-router 离开路由前确认

    react路由在做离开前确认时,有两种方法

    第一种是我们写的是动态路由,可以做一个简单的离开前确认

    path: '/association/administration',
        component: Administration,
        childRoutes: [
            {
                path: '/association/administration/basicInfo/:id',
                getComponent(location, cb) {
                    require.ensure([], require => {
                        const ARList = require('./components/basicInfo/action-reducer.js');
                        const compKey = 'adminActivity';
                        injectReducer(compKey, ARList.reducerList);
                        const activityContainer = require('./components/basicInfo/container.js').default;
                        cb(null, activityContainer);
                    });
                }
                onLeave() {  // 在路由离开时触发此方法
    
                },
                onEnter(nextState, replace) { // 在进入路由前触发此方法
                    
                }
            }

    这个函数是很好,但是有一个问题,无法获取到组件里的值,无法通过组建里的状态来触发,我个人认为不是很好

    那么另外一个方法是什么呢

    import React, {Component} from 'react';
    import {withRouter} from 'react-router';
    
    export default withRouter(class extends Component {
        state = {
            unsaved: true
        }
        componentDidMount() {
            this.props.router.setRouteLeaveHook(this.props.route, () => {
                if (this.state.unsaved) {
                    if(confirm('确定要离开吗')) {
                        return true
                    } else {
                        return false
                    }
                }
            })
        }
        render() {
            return (
                <div>
                    <h2>About</h2>
                    路由跳转前确认
                </div>
            )
        }
    })

    这个方法必须要在react-router 2.4.x 以上的版本才有 withRouter 方法,这样就可以做路由确认前的跳转,还可以获取到组件里的方法,通过组件状态来判断是否要触发

  • 相关阅读:
    SQL 游标示例
    在与SQL Server 建立 连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器
    Jquery 设置焦点
    MVC Hidden用法
    Jquery根据name取得所有选中的Checkbox值
    MVC程序部署后页面指向login.aspx
    ref 和out 关键字
    认识关系型数据库
    抽象类和接口详解
    1.穷举法
  • 原文地址:https://www.cnblogs.com/shenjp/p/7295485.html
Copyright © 2011-2022 走看看