You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React组件间传递表格点击参数实现动态路由与接口请求方案咨询

实现步骤

1. 修复Teams.jsx中Link的跳转路径语法

你当前的Link代码用了单引号包裹模板字符串,会导致参数无法正确注入,需要替换为反引号:

const columns = [
  { 
    field:"name", 
    headerName:"Name", 
    renderCell: (params) => <Link to={`/team/${params.value}/components`}>{params.value}</Link>
  },
  // 其余列配置
]

注意路径开头加斜杠,避免相对路径跳转异常

2. App.js中配置动态路由规则

根据你用的React Router版本对应配置:

React Router v6 配置示例

import { Routes, Route } from 'react-router-dom'
import Teams from './Teams'
import Component from './Component'

function App() {
  return (
    <Routes>
      <Route path="/teams" element={<Teams />} />
      {/* 用:name定义动态路径参数 */}
      <Route path="/team/:name/components" element={<Component />} />
    </Routes>
  )
}

React Router v5 配置示例

import { Switch, Route } from 'react-router-dom'
import Teams from './Teams'
import Component from './Component'

function App() {
  return (
    <Switch>
      <Route path="/teams" component={Teams} />
      <Route path="/team/:name/components" component={Component} />
    </Switch>
  )
}

3. Component.jsx中获取参数并发起请求

同样对应React Router版本处理:

React Router v6 写法

import { useParams } from 'react-router-dom'
import { useEffect, useState } from 'react'

function Component() {
  // 取出路由中的name参数
  const { name } = useParams()
  const [components, setComponents] = useState([])

  useEffect(() => {
    if(!name) return
    // 动态拼接请求地址
    fetch(`www.blablabla.com/teams/${encodeURIComponent(name)}/components`)
      .then(res => res.json())
      .then(data => setComponents(data))
  }, [name])

  // 其余表格渲染逻辑
}

这里用encodeURIComponent处理参数,避免团队名带特殊字符导致请求路径异常

React Router v5 函数组件写法

和v6一致,直接用useParams取参数即可,类组件可以用withRouter高阶组件包裹后从props.match.params.name取参数。

内容的提问来源于stack exchange,提问作者lucascruz9494

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 18:15:03