reactjs - 在 React Router 中匹配 url 中的值数组
问题描述
我有这样的代码:
const SEARCH_FORM_PAGES = [
'project/:projectGuid',
'analysis_group/:analysisGroupGuid',
'family/:familyGuid',
]
const VariantSearch = ({ match }) =>
<Switch>
<Route path={SEARCH_FORM_PAGES.map(pagePath => `${match.url}/${pagePath}`)} component={VariantSearchForm} />,
</Switch>
现在我想匹配project/:projectGuid
url 中的一个数组,而不仅仅是一个参数:projectGuid
,这可能吗?例如,我会有这样一个 url:project/F001_D1K2,F002_D1K3,F003_D2K5
并且我希望该部分F001_D1K2,F002_D1K3,F003_D2K5
被匹配并转换为一个数组projects
,我可以在VariantSearchForm
组件中获取该数组。
解决方案
你可以像这样发送多个参数:
/project?items=F001_D1K2&items=F002_D1K3&items=F003_D2K5
然后,使用query-string
库将其排列为数组:
import qs from "query-string";
import { useLocation } from "react-router-dom";
const VariantSearchForm = () => {
const { search } = useLocation;
const parsed = qs.parse(search);
console.log(parsed.items);
// => ["F001_D1K2", "F002_D1K3", "F003_D2K5"]
};
推荐阅读
- c# - 在 C# 中确定 PDF 是否只有页眉和页脚
- java - RxJava:当其中一个流什么都不发出时如何处理 combineLatest()
- unity3d - 当 AdMob 激励视频结束时 Unity 应用崩溃
- azure - terraform-azure 网络接口错误
- azure - 如何使用 dotnet SDK 删除 Azure 中的单个资源?
- r - 在 data.table 中按组计数快速前 N
- java - 无法跳过通过的测试用例并仅在 testNG 中测试失败的测试用例
- c# - 为什么自定义 SharePoint 计时器作业只能处理列表中的一半项目?
- python - 适用于 Windows .NET 或 python 的视频编辑器桌面应用程序
- java - sonar-scanner-maven 在分支构建上失败