• 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 方法,这样就可以做路由确认前的跳转,还可以获取到组件里的方法,通过组件状态来判断是否要触发

  • 相关阅读:
    java8 日期时间之间的关系
    redis bind连不上的坑
    mysql 表结构转excel表格
    软件工程实践总结
    Beta答辩总结
    Beta 冲刺(7/7)
    Beta 冲刺(6/7)
    Beta 冲刺(5/7)
    Beta 冲刺(4/7)
    Beta 冲刺(3/7)
  • 原文地址:https://www.cnblogs.com/shenjp/p/7295485.html
Copyright © 2020-2023  润新知