antd-admin
antd-admin copied to clipboard
权限路由问题
权限路由是怎么弄的?没有找到对应的文件啊,你的路由在哪里配置的?所有文件都没有找到路由呢,按理来说路由不是配置在.umirc.js文件中的嘛?
参考umi文档约定式路由
那权限怎么配置,在哪个文件
参考mock/user.js里的userPermission
@superlbr 权限路由也没有阻止history.listen中触发的接口,这个要怎么处理呢
@feibi
history.listen 一般在subscriptions 中,history.listen 内触需要一是加载好当前路由的model,二是路由匹配上,虽然页面没有权限,但是这两个条件都满足,所以会触发。
无权限时页面组件并没有渲染,所以要解决这个问题,可以将订阅操作迁移到组件内,参加下面代码
- 以
user页面为例,删除user/model.js中subscriptions代码
...
- subscriptions: {
- setup({ dispatch, history }) {
- history.listen(location => {
- if (pathToRegexp('/user').exec(location.pathname)) {
- const payload = location.query || { page: 1, pageSize: 10 }
- dispatch({
- type: 'query',
- payload,
- })
- }
- })
- },
- },
...
user/Index.js内新增订阅至componentWillMount,函数式组件页面可以使用useEffect hook
...
class User extends PureComponent {
+ componentWillMount() {
+ const { location, dispatch } = this.props
+ const payload = location.query || { page: 1, pageSize: 10 }
+ dispatch({
+ type: 'user/query',
+ payload,
+ })
+ }
...
@feibi
history.listen一般在subscriptions中,history.listen内触需要一是加载好当前路由的model,二是路由匹配上,虽然页面没有权限,但是这两个条件都满足,所以会触发。无权限时页面组件并没有渲染,所以要解决这个问题,可以将订阅操作迁移到组件内,参加下面代码
- 以
user页面为例,删除user/model.js中subscriptions代码... - subscriptions: { - setup({ dispatch, history }) { - history.listen(location => { - if (pathToRegexp('/user').exec(location.pathname)) { - const payload = location.query || { page: 1, pageSize: 10 } - dispatch({ - type: 'query', - payload, - }) - } - }) - }, - }, ...
user/Index.js内新增订阅至componentWillMount,函数式组件页面可以使用useEffect hook... class User extends PureComponent { + componentWillMount() { + const { location, dispatch } = this.props + const payload = location.query || { page: 1, pageSize: 10 } + dispatch({ + type: 'user/query', + payload, + }) + } ...
因为项目中history.listen比较多,都移动到组件内工作量很大,想着有没有其他方式
没看懂+1 就是觉得很高级
这是来自QQ邮箱的假期自动回复邮件。你好,我最近正在休假中,无法亲自回复你的邮件。我将在假期结束后,尽快给你回复。