求一个 React Router 路由守卫的现成轮子

2021-07-26 23:13:52 +08:00
 Smash

第一次写 React,官方的路由没有封装守卫

由于路由这块我还不是很熟悉,求一个现成的轮子.

2333 次点击
所在节点    程序员
7 条回复
shilianmlxg
2021-07-27 00:15:47 +08:00
如果是 hooks 是有轮子的 useRouter
如果不是 那我也蹲一个
ericgui
2021-07-27 06:05:07 +08:00
似乎是没有的
Yvette
2021-07-27 07:12:53 +08:00
SmiteChow
2021-07-27 09:13:51 +08:00
这玩意自己写不就几行代码么?

```app.jsx
import styles from '../css/app.cssm' assert { type: "css" }
import SideBar from './side-bar.jsx';
import ZYTable from './zy-table.jsx';
import BatchOperateZY from './batch-operate-zy.jsx';

const tabs = {
table: '资源管理',
batch: '批量操作',
};

export default function App(props) {
let hash = location.hash;
const [tab, setTab] = React.useState(hash === '' ? 'table' : hash.substr(1));

React.useEffect(() => {
document.title = `ZYMS 画廊 - ${tabs[tab]}`
document.location.hash = `#${tab}`
}, [tab])

return <div className={styles.flex}>
<SideBar tabs={tabs} tabName={tab} showTab={(name) => setTab(name)}/>
<div className={`${styles['tab-container']}`}>
{tab === 'table' && <ZYTable/>}
{tab === 'batch' && <BatchOperateZY/>}
</div>
</div>
}
```
Smash
2021-07-27 10:16:55 +08:00
@SmiteChow 我想做成统一配置类似 Vue,配置路由 React Router 支持,但是在配置路由上的守卫需要自己实现.

你的示例分散在各个 component 中,不方便管理和维护.
Carseason
2021-07-27 10:17:15 +08:00
hooks 的 Router 组件有个 render 的钩子来实现
Smash
2021-07-27 11:20:13 +08:00
@Carseason 谢谢,已经在文档看到了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/791940

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX