【发布时间】:2018-11-21 07:20:46
【问题描述】:
react router 中的 Link 和 Route 有什么区别? 我们在哪里使用它们,还是一起使用还是分开使用? 在哪里可以找到真正专业的 React Web 开发教程?
【问题讨论】:
标签: reactjs react-router
react router 中的 Link 和 Route 有什么区别? 我们在哪里使用它们,还是一起使用还是分开使用? 在哪里可以找到真正专业的 React Web 开发教程?
【问题讨论】:
标签: reactjs react-router
Route 和 Link 组件旨在一起用于完成应用程序中的不同任务。首先,React Router 库旨在实现两件事: 1. 确保在 URL 栏中捕获状态转换。 2.通过有状态的URL地址访问时,确保应用程序从正确的状态开始。
链接组件的作用 Link 组件是一种在应用程序中转换路由状态的方法。所以如果你点击一个链接组件,就会激活一个路由状态。例如:
<Link to="/example" />
将注册应用程序处于“/example”状态。此时,由组件来呈现适当的内容。
<Route path="/example" render={Profile] />
所以简而言之,Link 组件负责从状态到状态(页面到页面)的转换,而 Route 组件负责充当开关,根据路由状态显示某些组件。
库使用的最佳示例可以在https://reacttraining.com/react-router/找到
【讨论】:
<Link/> 是您可以用来导航路线的元素。
<Route/>,它最基本的职责是在某个位置与路线的路径匹配时渲染一些 UI。
它们是分开使用的。链接取决于 Route 的位置。但是Route可以不用Link。
反应路由器:https://reacttraining.com/react-router/web/guides/philosophy
React JS 教程: https://reactjs.org/docs/hello-world.html
【讨论】:
我将通过一个例子来解释, 如果我有:
<Router>
<Route path = "/" component = {LoginModule} />
<Route path = "/Register" component = {RegisterModule}/>
</Router>
如果我转到 URL localhost:3000,它将呈现登录模块。毫无疑问。
但是如果我转到 URL localhost:3000/Register,它将在同一页面上的登录模块下方呈现登录和注册模块。这是因为 /Register 里面也有 '/'。
这可以通过以下方式解决:
<Router>
<Route exact = {true} path = "/" component = {LoginModule} />
<Route path = "/Register" component = {RegisterModule}/>
</Router>
【讨论】:
一个不太专业的解释:
<Route exact path="/articles"> <Articles /> </Route>
表示“/articles”路由已创建,您不必在其他组件中再次创建它。这就是为什么Route一般会放在main组件里面,一般是“App”。
【讨论】:
通俗地说,我们可以理解如下所述的区别:
a)Routes 负责在其路径与当前 URL 匹配时呈现 UI,因为 Links 类似于 HTML 中用于访问路由路径的锚标记。
b) 路由涉及其中的组件,而链接仅涉及已由路由定义的路径
c) 路由是独立的实体,而链接依赖于路由。
【讨论】: