Reactjs 反应:之间的差异<;路线精确路径=“路径”/&引用/&燃气轮机;及<;路由路径=“路径”/&引用/&燃气轮机;

Reactjs 反应:之间的差异<;路线精确路径=“路径”/&引用/&燃气轮机;及<;路由路径=“路径”/&引用/&燃气轮机;,reactjs,react-router,react-router-dom,Reactjs,React Router,React Router Dom,有人能解释一下两者的区别吗 及 我不知道这个例子中“精确”的含义,实际上什么都不知道。当您有多个具有相似名称的路径时,exact参数起作用: 例如,假设我们有一个显示用户列表的Users组件。我们还有一个CreateUser组件,用于创建用户。CreateUsers的url应嵌套在Users下。因此,我们的设置可能如下所示: <Switch> <Route path="/users" component={Users} /> <Route path=

有人能解释一下两者的区别吗




我不知道这个例子中“精确”的含义,实际上什么都不知道。当您有多个具有相似名称的路径时,
exact
参数起作用:

例如,假设我们有一个显示用户列表的
Users
组件。我们还有一个
CreateUser
组件,用于创建用户。
CreateUsers
的url应嵌套在
Users
下。因此,我们的设置可能如下所示:

<Switch>
  <Route path="/users" component={Users} />
  <Route path="/users/create" component={CreateUser} />
</Switch>

简而言之,如果您为应用程序的路由定义了多条路由,请使用
Switch
组件,如下所示

<Switch>

  <Route exact path="/" component={Home} />
  <Route path="/detail" component={Detail} />

  <Route exact path="/functions" component={Functions} />
  <Route path="/functions/:functionName" component={FunctionDetails} />

</Switch>

然后,您必须将
exact
关键字添加到该路径,该路径也包含在另一条路径中。例如,主路径
/
包含在所有路径中,因此它需要有
精确的
关键字,以区别于以
/
开头的其他路径。原因也类似于
/函数
路径。如果您想使用另一条路径,如
/functions detail
/functions/open-door
,其中包含
/functions
,则需要对
/functions
路径使用
精确的

精确:bool

如果为true,则仅当路径与
location.pathname
完全匹配时才会匹配

**path**    **location.pathname**   **exact**   **matches?**

/one        /one/two                true        no
/one        /one/two                false       yes

最短的答案是

请试试这个

<switch>
   <Route exact path="/" component={Home} />
   <Route path="/about" component={About} />
   <Route path="/shop" component={Shop} />
 </switch>

请试试这个。

       <Router>
          <div>
            <Route exact path="/" component={Home} />
            <Route path="/news" component={NewsFeed} />
          </div>
        </Router> 

            

使用exact,您可以确保主页组件的内容不会出现在其他页面上

这是一个不使用精确:

主页

地点:/

-----------------
homepage content
-----------------
-----------------
homepage content
-----------------
第二页

位置:/第二页

-----------------
homepage content
-----------------
-----------------
second content
-----------------
-----------------
second content
-----------------
==========================================

使用精确:

主页

地点:/

-----------------
homepage content
-----------------
-----------------
homepage content
-----------------
第二页

位置:/第二页

-----------------
homepage content
-----------------
-----------------
second content
-----------------
-----------------
second content
-----------------

“但是,如果我们转到,它将再次遍历所有已定义的路由并返回它找到的第一个匹配。”-事实上,它将返回它找到匹配的所有路由(全部或部分)。@Chase DeAnda所描述的行为只有在用标签括起来的情况下才会发生。
exact
应该是我的默认值。关于每个路由定义是否在不同的组件中,我的意思是在管理组件中
/admin//users
,在根组件中
/admin/users/create
???我目前遇到这种情况,典型的
精确的
解决方案无法正常工作。我认为只有当两条路由都处于其交换机父级(或组件)的同一级别@ChaseDeAnda时,这种行为才会起作用。我需要的恰恰相反。也许我应该写一个新的答案来澄清我的情况并得到正确的答案。答案都很好。然而,人们可能会产生这样的疑问:“为什么我们不能为所有的路线提供准确的
”,想象一下这样一个URL<代码>
这是一个示例,用户的ID将动态输入URL,因此我们不能在您的路由器中使用
exact
prop。这基本上无法解释
exact
属性/prop的含义,因此肯定不是“答案”。你应该尝试解决实际被问到的问题,而不是给出一个你不确定OP实际存在的问题的解决方案。假设您有两条路线,如
/motor
/motorbike
,那么您需要将
精确的
放置到路径为
/motor
的路线上。否则,
/motor
/motorbike
路线都会使用路径
/motor
拾取组件。请解释您建议的解决方案。