在反应中使用useParams挂钩

时间:2020-04-02 18:19:01

标签: reactjs react-hooks

我正在学习useParams挂钩。我有这样的网址,需要 以便从中提取字母9。

Public Const myRangeNameVendor As String = "namedRangeDynamicVendor"
Public Const myRangeNameVendorCode As String = "namedRangeDynamicVendorCode"

Sub Main Macro
'
'
'
    Call NamedRanges(wb, wSh)

    With New FrmVendor
        .Tag = myRangeNameVendor & "|" & myRangeNameVendorCode
        .Show
   End With

   ...

我该怎么办?

3 个答案:

答案 0 :(得分:5)

例如,如果您定义这样的路由,则假设您使用的是React Router:

<Route path="/:id/about">
 <About />
</Route>

请注意,您使用:id表示法定义路径,这意味着在这种特定情况下,id将成为参数。然后创建一个链接组件

<Link to="/2/about">About</Link>

在您的组件中,此示例中的about组件可以使用如下所示的钩子:

function About() {
 const { id } = useParams();
 return (
  <div>
   <h2>Now showing post {id}</h2>
  </div>
 );
}

如果您要检查结果https://codesandbox.io/s/react-router-basic-nv8pn

,则可以使用此代码沙箱

答案 1 :(得分:3)

看看这个:

useRouter hook for better routing with react-router

它将所有钩子useParams, useLocation, useHistory, useRouteMatch包装到单个useRouter钩子中,该钩子仅公开我们需要的数据和方法。

希望您喜欢它!

答案 2 :(得分:2)

假设您正在使用react-router,则应在React应用中使用Browser Router: https://reacttraining.com/react-router/web/api/BrowserRouter

,然后声明一条路线,例如:

<Route path="/{id}/solution" component={Component} />

,然后在您的组件中可以使用它:

const { id } = useParams();