有没觉得 react-router 的“去中心化”,用起来很难受 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
revalue
V2EX    React

有没觉得 react-router 的“去中心化”,用起来很难受

  •  
  •   revalue 2020-06-04 10:18:00 +08:00 4750 次点击
    这是一个创建于 030 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近弄一个后台系统页面,后端发一个大型的权限树过来。其实就是比对 url 判断权限就可以了,如果有多级 switch 组件就要截断或者拼接 url 来比对。

    这个 url 其实是和组件的嵌套关系耦合的,改起来真麻烦。

    在路由拦截层面,react-router 都是在一个一个“关卡”手动搞权限判断,这个精度和操作空间是细了,但是管理起来好麻烦。

    是 vue-router 给宠的?
    8 条回复    2020-06-04 20:52:54 +08:00
    maichael
        1
    maichael  
       2020-06-04 10:45:35 +08:00
    再封装一层,例如这种方法 https://zhuanlan.zhihu.com/p/84390547
    revalue
        2
    revalue  
    OP
       2020-06-04 10:52:04 +08:00
    @maichael 额,封装是可以,那么去中心化的意义何在
    maichael
        3
    maichael  
       2020-06-04 10:58:47 +08:00   1
    @revalue #2 你也可以中心化的写呀,Route4 之后 route 才是一个真正意义上的 component,和其它普通的 component 没有区别,方便于根据路由做更精细化的控制,但你想要做大一统的路由也完全没问题,https://github.com/ReactTraining/react-router/tree/master/packages/react-router-config
    Hasel
        4
    Hasel  
       2020-06-04 11:41:29 +08:00
    #3 说的很对。react-router 给了你选择的权利,可以自己封装一个大一统的路由,也可以自己散布在各个组件中精细控制,一切取决你怎么使用而已。
    封一个和 vue-router 一样的也很方便嘛。
    yazoox
        5
    yazoox  
       2020-06-04 12:21:32 +08:00
    不是很懂 react router 有没有讲解的比较好的?谢谢
    KroNekoFan
        6
    KuroNekoFan  
       2020-06-04 12:28:04 +08:00
    你可以不同的 page 引入封装好的判断方法...
    aegisho
        7
    aegisho  
       2020-06-04 16:05:57 +08:00
    按我们以前的设计 react-router 只是定义路径和组件的关系。权限的判断应该是在类似菜单组件中

    举例:系统中有 100 个 react-router 定义的路径,这是不跟权限关联的
    权限决定的是“用户可见的菜单”有多少个。

    假设用户没有 A 路径的权限,他无法通过菜单进入,但是可以通过手输地址进入。
    同样的,接口层也会做鉴权,所以用户直接进入是无效的。

    如果期望用户手输地址也无法进入,可以考虑在 layout 组件中加一个判断,在 router change 时判断是否有权限,如果没有权限,直接跳转到 403 页面
    soulmt
        8
    soulmt  
       2020-06-04 20:52:54 +08:00
    router3 是和 vue-router 有点像的 router4 开始有了这个理念,这个理念很先进,但是也同样支持你希望的集中配置,但是去中心化的问题,集中配置也存在,当一个项目里面有上百个路由,而你却还要梳理各个路由之间的关系的时候你会很奔溃, 其实这东西没有一个完整的答案,既然是去中心化的开发,那么你应该用去中心的思路去梳理代码,如果是集中配置,那么就平铺式的梳理代码,自然各有各的好处, 有时候还是要兼容不同的思想
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5642 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 02:06 PVG 10:06 LAX 18:06 JFK 21:06
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86