【React】我在使用react-router-dom时遇到了麻烦的故事
首先
我最近正在学习React,所以我会自行记录并编写此次会议记录。
虽然我认为这些文章大致都已经发布了,所以最好参考其他人的文章。
这完全是出于自我满足。
迷上了这个代码
import { BrowserRouter, Link, Switch, Route } from "react-router-dom"
/**省略**/
<BrowserRouter>
<Link to="/">Home</Link><br/>
<Link to="/page01">page01</Link><br/>
<Link to="/page02">page02</Link><br/>
<Switch>
<Route exact path="/"><Home /></Route>
<Route
path="/page01"
render={({match: {url}}) => (
<Switch>
<Route exact path={url}>
<Page01/>
</Route>
<Route exact path={`${url}/detailA`}>
<Page01DetailA/>
</Route>
<Route exact path={`${url}/detailB`}>
<Page01DetailB />
</Route>
</Switch>
)} />
<Route path="/page02"><Page02 /></Route>
</Switch>
</BrowserRouter>
/**省略**/
嗯,我刚刚使用了类似router-dom的包在 React 中学习路由。
但它就是不能运行!!
大概会发生像是「写法不同!要用Routes和Navigate」或者「Route绝对要放在Routes里面!」这样的错误。
因为大多数情况下会发生这种错误,所以无法使用History或Switch。
真是个困扰啊。
造成了这种现象的原因
查看上述代码的错误后,发现问题是因为react-router-dom的β版v6导致的。似乎无法再使用之前那种陷入困境的代码写法了…
唉,感觉安装包时过于轻率反而弄巧成拙了。
解决方案
熟悉v6的规范
如果在现在就熟悉这个 V6,以后做起来会更容易吧?
因为在 V5 中可能需要指定 exact,所以看起来有很多改进。
我觉得在这边普通处理更加有意义。
而且,简单来说,更易于阅读。
希望你参考上述内容。
将其版本降级到v5.
只要降低npm软件包的版本即可。
以下是命令:
npm i -S react-router-dom@5
总结
刚开始学习React的人,如果用一些旧的教材或网站学习,容易遇到这个错误。我也是其中之一,所以写下来作为备忘录。
※ 我的主要職業不是在前台工作。 (※ My main occupation is not in the front desk.)