https://umijs.org/zh-CN/docs/routing#wrappers
通过指定高阶组件 wrappers 达成效果。
如下,src/pages/user:
import React from 'react'function User() {return <>user profile</>}User.wrappers = ['@/wrappers/auth']export default User
然后在 src/wrappers/auth 中,
import { Redirect } from 'umi'export default (props) => {const { isLogin } = useAuth();if (isLogin) {return <div>{ props.children }</div>;} else {return <Redirect to="/login" />;}}
这样,访问 /user,就通过 useAuth 做权限校验,如果通过,渲染 src/pages/user,否则跳转到 /login,由 src/pages/login 进行渲染。
wrappers
- Type:
string[]
配置路由的高阶组件封装。
export default {routes: [{ path: '/user', component: 'user',wrappers: ['@/wrappers/auth',],},{ path: '/login', component: 'login' },]}
然后在 src/wrappers/auth 中,
import { Redirect } from 'umi'export default (props) => {const { isLogin } = useAuth();if (isLogin) {return <div>{ props.children }</div>;} else {return <Redirect to="/login" />;}}
这样,访问 /user,就通过 useAuth 做权限校验,如果通过,渲染 src/pages/user,否则跳转到 /login,由 src/pages/login 进行渲染。
