繁体   English   中英

如何获取当前“页面”并在 React Router v6 中作为参数传递

[英]How to get current 'page' and pass as param in React Router v6

如何获取当前“页面”,即Route下方的":name" ,并将其作为道具传递给<Food>组件? 例如,如果我在"/food/egg", I should be passing “egg”传递给组件。 我找不到这么多版本的答案。

import React, { Component } from 'react';
import "./App.css";
import Food from './Food';
import { Routes, Route} from 'react-router-dom';

export default class App extends Component {
  render() {
    return (
      <div className="App">
        <Routes>
          <Route path="/food/:name" element={<Food name= 
 {something here?} />} />
        </Routes>
      </div>
    )
  }
}

从反应路由器文档:

import * as React from 'react';
import { Routes, Route, useParams } from 'react-router-dom';

function ProfilePage() {
  // Get the userId param from the URL.
  let { userId } = useParams();
  // ...
}

function App() {
  return (
    <Routes>
      <Route path="users">
        <Route path=":userId" element={<ProfilePage />} />
        <Route path="me" element={...} />
      </Route>
    </Routes>
  );
}

所以你只需要使用useParams钩子,它返回一个 object 像{ id: "1234", name: "John Doe" }

我不确定如何将其作为道具传递。 但我可以帮助您从目标路线中的 url 获取值,即'/food/:name'

UseLocation 是一个钩子,可以帮助您在 React Router v6 中实现这一点。 它将为您提供当前所在的 url。 一旦你得到它,你可以使用拆分 function 拆分它并从 url 中提取你需要的信息。

代码将 go 是这样的:

首先是导入语句

import { useLocation } from 'react-router-dom'

然后主里面的代码 function


const location = useLocation()

const name = location.pathname.split('/')[2]

在拆分 function 中,传入 ':name' 相对于 url 的索引值

PS:这是我在这里的第一个答案。 希望能帮助到你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM