在react-router中匹配带连字符的路由

时间:2018-04-29 15:14:41

标签: javascript reactjs react-router

我有这样的网址;

http://0.0.0.0/country/bosnia-and-herzegovina-644

这是我的路线声明

<Route path="/country/:countrySlug-:countryId" component={CountryPage} />

所以这不起作用,因为连字符打破它,我怎么能改变它所以我只提取最后一个连字符作为参数,我真的不想改变我的slug生成系统使用不同的字符,因为这些是最可读的恕我直言,但仅用于信息,而不是内容加载。

由于

2 个答案:

答案 0 :(得分:1)

我不知道你是否可以这样做,但也许你可以这样做:

<Route path="/country/:country" component={CountryPage} />

然后在组件中:

const countryId = this.props.match.params.country.slice('-').pop();

答案 1 :(得分:0)

参数分隔和单词分隔不能同时使用连字符-

您可以使用连字符-进行参数分隔,并在符号_之间使用下划线countrySlug

您的网址看起来像

http://0.0.0.0/country/bosnia_and_herzegovina-644

现在使用此Route声明

<Route path="/country/:countrySlug-:countryId" component={CountryPage} />

生成链接时,请不要忘记用_符号代替空格,否则您的URL将会是这样。

http://0.0.0.0/country/bosnia%20and%20herzegovina-644

但是仍然可以正常工作。