UmiJS 中 @umijs/plugin-access 和 @umijs/plugin-layout 的使用问题
UmiJS 中 @umijs/plugin-access 和 @umijs/plugin-layout 的使用问题
示例代码:
1  | // src/access.ts  | 
注意(有坑):
@umijs/plugin-access 插件通过 patchRoutes 处理了 props.routes (完整的路由),@umijs/plugin-layout 插件判断权限时,读取的是 props.route.routes (当前路由),
而此时 props.routes 与 props.route.routes 的 unaccessible 值并不一致(后者为旧值)。


影响:
通常首次访问时,currentUser 是 undefined,则 isLogin = false,因为上述问题,
直接导致在登录页 setInitialState 之后,currentUser 已经有值,isLogin = true 的情况下,@umijs/plugin-layout 插件读取到的路由数据是旧数据,
即 props.route.routes 中的 unaccessible = true,
而 props.routes 中的 unaccessible = false (因为权限已经有了)
临时解决方案:
经测试发现,如果首次加载的时候,将权限的值设为 undefined 而不是 false,
那么 setInitialState 之后,props.route.routes 中的 unaccessible = false,而不是 true。