1.超级实用!码实React-Router v6实现页面级按钮权限
2.reactrouter如何传参?码实
3.通过 React Router V6 源码,掌握前端路由
4.ReactRouterDom-v5&v6用法与异同
超级实用!码实React-Router v6实现页面级按钮权限
大家好,码实我是码实王天~
今天咱们用 React+reactRouter 来实现页面级的按钮权限功能。这篇文章分为三个部分:实现思路、码实农场矿机源码代码实现与踩坑记录。码实
直接拖到第二章节看代码哦。码实
通常情况下,码实咱们为用户添加权限时,码实除了页面权限,码实还会细化到按钮级别,码实比如新增、码实删除、码实查看等权限。码实
如下效果,切换用户登录后,操作权限除了左侧菜单,还有页面按钮。互动课堂源码
实现思路的核心在于权限数据结构。获取当前页面的按钮权限数据,需要与后端沟通好,定义页面路径与权限数据的映射关系。
使用路由实现页面按钮权限的步骤如下:
1. 需与后端配合,将按钮权限与页面路由一同返回。
2. 手动创建一个对象,存储路由与按钮权限映射关系,用户登录后,在生成路由配置时,同时存储按钮权限与页面路径的映射数据于本地。
3. 封装按钮权限组件,读取本地权限数据,控制按钮的显隐与禁用状态。
4. 模拟的路由数据,展示员工管理页面的路由与按钮配置。
效果:切换用户登录后,右侧表格与操作按钮权限明显变化。grbl源码翻译
总结一下 reactRoute 与 vueRouter 的实现区别:
在 Vue 中,使用 vueRouter 配置路由元信息,方便实现页面级别的按钮权限控制。而在 react-Router6 版本中,没有提供路由元信息配置,导致无法通过自定义路由属性获取权限数据。
尝试添加路由自定义属性,获取权限数据时,代码报错。在 react-route6 中,无法自定义路由属性,导致错误。
感谢阅读,读者朋友好,我是王天~尝试做过很多事情,汽修专业肄业生,半路出道的野生程序员、前端讲师、手机示波器源码新手作者,最终还是喜欢写代码、乐于用文字记录热衷分享。
如文章有错误或不严谨之处,期待您的指正,万分感谢。如果喜欢或有所启发,欢迎 star,对作者也是一种鼓励。
微信:「wangtian」,加我进王天唯一的读者群。
个人博客: itwangtian.com
reactrouter如何传参?
在 React Router 6 中,路由参数、查询参数和状态对象是用于传参的三种方式。
路由参数采用在 URL 中嵌入参数的模式,通过在路径中使用冒号定义参数。例如,用户访问 /:id 时,gcc 7.3 源码将作为路由参数获取,并通过 useParams 钩子访问。
查询参数在 URL 中通过问号传递参数。向 /users 页面传递名为 id 的查询参数,并使用 useLocation 钩子获取 URL 中的查询参数,通过 URLSearchParams 对象解析它们。
状态对象在导航时用于传递数据。在导航到 /users 页面时,通过 navigate 函数的第二个参数传递名为 id 的状态对象。在组件中,通过 useLocation 钩子获取当前 URL 的状态对象。
需要注意的是,使用状态对象传递数据会存储在浏览器的会话历史中,仅适用于页面之间的相邻导航。若需在不同页面间共享数据,建议使用如 Redux 或 Context API 等其他数据传递方式。
通过 React Router V6 源码,掌握前端路由
深入理解前端路由是提升 React 项目效率的关键。react-router-dom 的V6版本提供了更丰富的功能和设计思路,让我们可以通过阅读源码来掌握其核心架构和组件实现。客户端路由模式
React Router 支持客户端路由,与服务端解耦,实现无刷新页面切换,有利于SPA应用的用户体验。主要分为Hash模式和History模式:Hash模式利用window.location.hash实现DOM定位,History模式则通过history API操作路由堆栈,利于SEO。BrowserRouter架构
react-router-dom的核心模块BrowserRouter基于History模式,通过createBrowserHistory封装浏览器的history API。当路由变化时,它会触发组件的更新和渲染。核心实现与组件
BrowserRouter下,BrowserRouter组件和Router Context负责存储路由信息,useRoutes则简化了路由配置。RouteObject定义了路由规则,useOutlet和Outlet组件在嵌套路由中起到关键作用。Link和NavLink用于导航,Navigate用于跳转,而Routes组件则通过useRoutes实现配置化路由渲染。实践案例与总结
阅读源码虽需耐心,但能深入理解数据预加载、路由绑定等新特性。虽然有remix-run/router等其他选择,但根据项目需求,合理选择和理解React Router V6的实现,对提升编码能力非常有益。务必结合实际项目场景,灵活应用。ReactRouterDom-v5&v6用法与异同
本文旨在深入探讨React Router Dom的两个主要版本,V5和V6,以及它们在用法上的异同。React Router Dom作为React.js中实现路由功能的常用库,为开发者提供了强大的页面导航和状态管理能力。
React Router Dom V5是一个稳定且广泛应用的版本,通过导入所需组件、定义路由、在组件中使用路由参数,实现了路由功能。此版本提供了丰富的API,为开发者提供了灵活的配置选项。
相比之下,React Router Dom V6是一个全新的重写版本,旨在提供更简洁、直观的API。V6版本的用法与V5类似,但通过优化和简化API设计,使得路由配置更加直观和易用。开发者只需导入所需组件、定义路由,即可实现动态加载组件的功能。
在React应用中,路由功能至关重要。为实现更高效、稳定的路由处理,React Router Dom提供了两种常用的路由器组件:BrowserRouter和HashRouter。
BrowserRouter使用HTML5的History API来处理路由,通过history.pushState()和history.replaceState()方法修改浏览器URL,而无需页面重新加载。BrowserRouter依赖于基于浏览器URL路径的匹配规则,因此要求在服务端配置路由,以确保刷新或直接访问URL时正确加载组件。
HashRouter使用URL的哈希部分(#)实现路由功能,通过监听window对象的hashchange事件响应URL变化。哈希路由在URL中添加哈希部分,并在客户端处理URL变化,避免了浏览器重新加载页面。这种路由方式在部署静态服务器的应用中尤其有用,因为它不触发服务器请求。
在配置React应用时,可以使用"homepage"参数在package.json文件中指定应用的基本URL路径。这会影响路由匹配规则和导航链接生成。对于BrowserRouter,设置"homepage"参数后,路由匹配规则和导航链接会考虑基本URL路径,添加前缀以确保正确匹配。而对于HashRouter,无论是否设置"homepage"参数,始终使用相对于根目录的哈希部分进行路由匹配和链接生成。
在配置React Router组件时,可以使用其他参数来影响路径生成和匹配。通过合理设置这些参数,开发者可以实现特定需求的路由配置,灵活地构建应用的导航结构。