首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React:使用React传递参数-路由器v6

React:使用React传递参数-路由器v6
EN

Stack Overflow用户
提问于 2022-07-21 08:19:28
回答 2查看 529关注 0票数 2

App.js,其中声明了我的所有路线:

代码语言:javascript
复制
function App() {
  return (
    <div className="App">
      <Routes>
        <Route path="/">
          <Route index element={<Homepage />} />
          <Route path="settings" element={<Settings />} />
          <Route path="report/:runId" element={<TestReport />} />
          <Route path="report/:runId/:specFileName" element={<SpecFile />} />
        </Route>
      </Routes>
    </div>
  )
}

在这里,我有一个链接(在我当前的例子中) /report/2/Login,在这里我想传递一些参数:

代码语言:javascript
复制
   <TableCell>
      <Link
         to={`/report/${this.props.runId}/${specFile.name}`}
         state={{ testcases: this.props.testcases }}
      >
         {specFile.name}
      </Link>
   </TableCell>

这里我想访问我的参数:

代码语言:javascript
复制
import { useLocation } from "react-router-dom";

export default function SpecFile() {
   const location = useLocation();
   const { from } = location.specFile.name;
   console.log(from); // Should print "Login" instead gives Error Message: Cannot read properties of undefined (reading 'name')
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-22 00:22:03

location.specFile.name;无效并中断,因为location对象没有任何specFile属性。

位置

接口位置{路径名:字符串;搜索:字符串;散列:字符串;状态:未知;键:字符串;}

访问location.state上传递的路由状态,特别是在location.state?.testcases上。

对于给定的路由<Route path="report/:runId/:specFileName" element={<SpecFile />} />SpecFile组件应该使用useParams挂钩来访问路由路径params、runIdspecFileName

示例:

代码语言:javascript
复制
import { useLocation, useParams } from "react-router-dom";

export default function SpecFile() {
  const { id, specFileName } = useParams();

  const { state } = useLocation();
  const { testcases } = state || {};

  useEffect(() => {
    console.log({ id, specFileName, testcases });
  }, [id, specFileName, testcases]);
  
  ...
}
票数 2
EN

Stack Overflow用户

发布于 2022-07-21 08:21:50

有一个钩子在反应-路由器-6为这.

代码语言:javascript
复制
import { useSearchParams } from 'react-router-dom';

然后用它就像:

代码语言:javascript
复制
const [searchParams] = useSearchParams();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73062851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档