React Router:如何匹配嵌套路由的不确定子路径数量?

时间:2019-07-15 22:31:43

标签: reactjs react-router

我正在尝试创建一个类似Dropbox的文件浏览器。会有不确定数量的子路径,如下所示:

localhost:3001:file-manager/folder1/folder2/...folderN

我有这个:

<Route path="/file-manager/:folderName" component={LandingPage} />

这使我可以访问:http://localhost:3001/file-manager/foo/bar/baz。但是,当我未选中props.match时,它仅显示foo的匹配项,而不显示低于该水平的值(条形和底线)。

match:
isExact: false
params: {folderName: "foo"}
path: "/file-manager/foo"
url: "/file-manager/foo"

我该怎么做?我正在阅读并观看有关递归路由的所有教程追加到视图。我想替换视图。

2 个答案:

答案 0 :(得分:1)

几个月前,我遇到了完全相同的问题。我目前找不到我使用的确切代码,但是如果我没记错的话,可以使用星号表示“此后的一切”,其中包括任何其他路径分隔符:

<Route path="/file-manager/:folderName*" component={LandingPage} />

这确实意味着props.match.params.folderName将是完整的字符串,因此如果需要一系列路径组件,则必须由/自己进行分割。

重要说明:*将使其与任何内容匹配,因此,如果您要匹配特定的路线,请确保将其放在之前,例如

<Route path="/file-manager/example" component={ExamplePage} />
<Route path="/file-manager/:folderName*" component={LandingPage} />

答案 1 :(得分:0)

我认为正在发生的事情在某种程度上是正确的,因为您仅在路由声明中定义了一层嵌套的路由:

<Route path={`${this.props.match.url}/:folderName`} component={LandingPage} />

因此,找到的第一个路径参数(在您的情况下为<Route path="/file-manager/:folderName" component={LandingPage} /> )与Recursive Routes属性匹配,而其他参数则被忽略。

我从来没有做过这样的事情,但是我只能想象它可以使用动态路由定义来工作。当然,仅当您的应用将为自第一个路由生成的所有路由呈现相同的组件时,此方法才起作用。

%python

spark.conf.set("spark.sql.execution.arrow.enabled", "true")
import pandas as pd
processed_table.toPandas().to_parquet("/dbfs/intermediate", engine="fastparquet", compression = None)

这样的事情应该可以防止您报告的问题。但是您必须放置一个外部路由定义才能开始路由递归。在这种情况下,您的情况会很好。

preprocess.py

您可以在import pandas as pd intermediate = pd.read_parquet("/dbfs/intermediate") 一章中的here上找到类似的内容。

希望这会有所帮助!