如何提取反应路由器参数? [英] How to extract a react router parameter?

查看:41
本文介绍了如何提取反应路由器参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个项目,其中更新页面的唯一方法是在 url 中写入一个值(假设它必须是那样).该值应该被提取并作为一个参数在休息调用中发送.我好像没有找到在App.js上设置路由的方法,并设法取出url参数.

我的 App.js:

function App() {useEffect(() => {获取参数()//休息调用代码})返回 (<浏览器路由器><路由路径=/:日期"/><头/><div className="page-wrap"><Header className="header"/><主要/><页脚类名称=页脚"/>

</BrowserRouter>);}函数 getParam(){让 {date} = useParams控制台日志(日期)归期})}导出默认应用程序;

解决方案

你可以在函数组件中使用 useParams 钩子:

导出默认函数 Main() {让{日期} = useParams();console.log("date from route:", date)返回<>我是主要组件</>}

当您将路由器设置为:

导出默认函数 App() {返回 (<浏览器路由器><开关><准确重定向 from="/";to=/some-date-here"/><路由精确路径=/:date"><头/><div className="page-wrap"><Header className="header"/><主要/><页脚类名=页脚"/>

</路线></开关></BrowserRouter>)}

I have a project where the only way to update the page is to write a value in the url (let's say it has to be that way). The value should get extracted and sent as a parameter in a rest call. I don't seem to find the way to set the route on App.js and manage to take out the url parameter.

My App.js:

function App() {
  useEffect(() => {
    getParam()
    //rest call code

  })
  return (   
    <BrowserRouter>
      <Route path="/:date"/>
        <Head />
        <div className="page-wrap">
          <Header className="header"/>
          <Main />
          <Footer className="footer"/>
        </div>
      
    </BrowserRouter>
  );
}

function getParam(){
    let {date} = useParams
    console.log(date)
    return({date})
}
export default App;

解决方案

You can use useParams hook in a function component:

export default function Main() {
  let { date } = useParams();
  console.log("date from route: ", date)
  return <>I am Main Component</>
}

when you have router setup as:

export default function App() {
  return (
    <BrowserRouter>
    <Switch>
      <Redirect exact from="/" to="/some-date-here"/>
      <Route exact path="/:date">
        <Head />
        <div className="page-wrap">
          <Header className="header"/>
          <Main />
          <Footer className="footer"/>
        </div>
      </Route>
    </Switch>
    </BrowserRouter>
  )
}

这篇关于如何提取反应路由器参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
其他开发最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆