React 封裝路由表


import React, { Component } from 'react'
import { Route, Redirect, Switch } from 'react-router-dom'

export default class RouterView extends Component {
    render() {
        let { list } = this.props
        let newList = list.filter(item => !item.from)
        let redArr = list.filter(item => item.from)
        return (
            <div className = "view">
                <Switch>
 
      //渲染Route 並判斷是否重定向,是否有二級路由的處理
                    {
                        newList.map((item, index) => {
                            let Com = item.com
                            return <Route key = { index } path = { item.path } render = { (pro)=> {
                                if (item.auth && !sessionStorage.getItem('user')) {
                                    return <Redirect to = {{
                                        pathname: '/login',
                                        params: {
                                            src: item.path
                                        }
                                    }}/>
                                } else if(item.children) {
                                    return <Com { ...pro } children = { item.children } arr = { item.children.filter(item => !item.from) }/>
                                } else {
                                    return <Com { ...pro }/>
                                }
                            }}/>
                        })
                    }
 
      //路由重定向
                    {
                        redArr.map((item, index) => {
                            return <Redirect key = { index } from = { item.from} to = { item.to }/>
                        })
                    }
                </Switch>
            </div>
        )
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM