当前位置: 首页 > 知识库问答 >
问题:

反应:和之间的差异

夏侯博
2023-03-14

有人能解释一下

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

<Route path="/" component={Home} />

我不知道确切的意思。

共有3个答案

皮嘉德
2023-03-14

请看这里:https://reacttraining.com/react-router/core/api/Route/exact-bool

准确:布尔

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

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

/one        /one/two                true        no
/one        /one/two                false       yes
公良修竹
2023-03-14

简而言之,如果您为应用的路由定义了多个路由,并包含了像这样的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布线使用精确的

屈健柏
2023-03-14

在这个例子中,没有什么是真的。当您有多个具有相似名称的路径时,exact参数起作用:

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

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

现在,当我们转到http://app.com/users路由器将遍历我们定义的所有路由,并返回找到的第一个匹配项。因此,在这种情况下,它将首先找到用户路由,然后返回它。一切都好。

但是,如果我们转到http://app.com/users/create,它将再次遍历所有已定义的路由,并返回找到的第一个匹配项。React路由器进行部分匹配,因此/users部分匹配/users/create,因此它将再次错误地返回用户路由!

参数禁用路由的部分匹配,并确保仅当路径与当前url精确匹配时才返回路由。

因此,在这种情况下,我们应该向用户路由添加精确,以便它只在/Users上匹配:

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

这些文档详细解释了exact,并给出了其他示例。

 类似资料:
  • 我真的不知道react router中render和component prop in Route之间的区别,在文档中它说render不创建新元素,但component创建新元素,我试图返回历史,但我发现在使用render in Route时调用componentWillMount,“如果为组件属性提供内联函数,则在每次渲染时都会创建一个新组件。这将导致现有组件卸载和新组件装载,而不仅仅是更新现有

  • 问题内容: 很快就有两个相等运算符:double equals( )和Triple equals( ),两者之间有什么区别? 问题答案: 简而言之: 操作员检查其实例值是否相等, 操作员检查引用是否指向同一实例, 长答案: 类是引用类型,可能有多个常量和变量在幕后引用类的同一单个实例。类引用保留在运行时堆栈(RTS)中,其实例保留在内存的堆区域中。当您控制平等时, 这意味着它们的实例是否彼此相等。

  • 我编写了一个简单的脚本,它接受任意数量的参数来演示< code>$@和< code>$*之间的区别: 在我做的 CLI 上 这就是打印出来的 因为它们是相同的,这是否意味着等于?还是我遗漏了一点?

  • 问题内容: package main 该代码可以很好地工作。但是,如果按如下所示更改方法,则会导致死循环。区别在于将替换为。为什么? 问题答案: 因为程序包检查要打印的值是否具有方法(或换句话说:是否实现接口),如果是,则将调用它以获取值的表示形式。 软件包doc中对此进行了说明: […]如果操作数实现String()字符串方法,则将调用该方法将对象转换为字符串,然后根据动词的要求对其进行格式化(

  • 我正在通过做微控制器项目来自学C++。我当前的项目是使用一对或Adafruit羽毛分组无线电。无线电数据包的库函数需要一个C样式的字符串(我相信),我理解它是一个char的数组。 我已经设置了一个枚举来反映接收方的各种操作,并希望将该状态发送回发送方。所以我想把枚举变成char的数组。 在搜索将枚举转换为char数组的方法时,最简单的方法(对我来说)是将枚举变量传递给带有switch语句的函数,该

  • 我是Hadoop的新手。我正在浏览专业Hadoop解决方案的书,以获得一些关于Hadoop和生态系统的知识。我想澄清HDFS和HBase之间的主要区别是什么。我理解的方式就像两者都是存储系统。它们的区别只是在访问数据方面。HBase通过非关系型数据库访问数据,HDFS使用计算框架(MapReduce)处理数据。如果是这种情况,为什么我们不能只有一个存储HDFS或HBase。根据需求,他们将插入和插