使用精确和严格的道具

Posted

技术标签:

【中文标题】使用精确和严格的道具【英文标题】:Usage of exact and strict props 【发布时间】:2019-02-15 21:54:12 【问题描述】:

我正在使用 React-JS 中的 React-Router:

<Route> 是一个内置组件,有两个不同的属性: exactstrict

问题

documentation 没有明确定义 exactstrict 之间的区别。

请帮助我。该文件非常混乱,当时还不清楚。

【问题讨论】:

【参考方案1】:

用例 1

如果您同时使用exactstrict,则location.pathname 将仅与路径道具中提供的完全匹配。

例子:

<Route exact strict path="/one/" component=About/>

将仅匹配 /one/,但不匹配 /one/one/two

用例 2

如果您只使用strict,则location.pathname 将匹配带有斜杠的。

例子:

<Route strict path="/one/" component=About/>

将匹配 /one//one/two 但不匹配 /one

用例 3

如果您只使用exact,那么location.pathname 将匹配精确的位置路径。

例子:

<Route exact path="/one" component=About/>

将匹配 /one/one/exact 属性不关心斜杠。但它不会匹配/one/two

【讨论】:

请详细说明。或将任何文章的链接发给我 知道了……你的回答对我很有帮助。 很高兴,你明白了。 您以一种很好的方式提出了答案。非常感谢。【参考方案2】:

ReactRouter 的 strict 属性定义了路径名中是否存在请求路径的 strict 条目,如文档中所述。例如,如果您不想处理没有尾部斜杠的页面路由,您的Route 可以这样描述:

<Route path="/mypath/" strict ... />

所以路径名/mypath 不会被这个Route 处理,而路径名/mypath/ 会被处理。请注意,在这种模式下,Route 还将捕获其他子路由,例如/mypath/childroute/mypath/childroute/childroute2 等,但它不会赶上路线 /mypath?query=...。想想这个道具,就像你使用"string".includes("substring")

"/mypath".includes("/mypath/")       => false
"/mypath/".includes("/mypath/")      => true
"/mypath/kappa".includes("/mypath/") => true

exact 属性用于定义是否存在正是请求的路径。 通常它用于包装没有子路由的路由(例如主页)。

<Route path="/" exact ... />
<Route path="/" ... />

第一条路线将仅捕获 mydomain.commydomain.com/mydomain.com/?query=... 等路线。第二条路线将捕获所有路线,例如mydomain.commydomain.com/myroute

【讨论】:

以上是关于使用精确和严格的道具的主要内容,如果未能解决你的问题,请参考以下文章

js 数值精确运算使用math.js

PHP7 中的标量和严格类型是性能增强功能吗?

如何在 Dapper 上执行严格的映射

如何使用新的反应路由器钩子测试组件?

java中不常见的关键字:strictfp

在 Gatsby 中使用 Graphql 和 Contentful 时图像不显示,道具类型失败:类型为“数字”的道具“图像”无效,预期为“对象”?