javascript - 如何在React Router v6中获取嵌套路由中的参数?它不适用于我的项目

标签 javascript reactjs react-router

我的代码无法运行。这是我的App.js文件:

function App() {
  return (
    <div className="App">
      <Routes>
        <Route path="/" element={<Dashboard />} >
          <Route path="teachers" element={<Teachers />} >
            <Route exact path="single/:id" element={<SingleTeacher />} />
          </Route>
        </Route>
        <Route path="*" element={<NotFound />} />
      </Routes>
    </div>
  );
}

这是我的代码,我正在其中路由 teachers/single/{id}路线:

export default function TeacherCard({ name, spacial_at, teacher_pic_url, _id }) {
  return (
    <div className="bg-white shadow-lg py-4 px-3 rounded-lg flex md:flex-row flex-col justify-between items-center">
      <div className='relative'>
        <img className='h-16 w-16 object-cover rounded-full' src={teacher_pic_url} alt={name} loading={'lazy'} />
        <span className='absolute bottom-1 right-1 rounded-full px-1 py-1 bg-green-500 border border-white'></span>
      </div>
      <div className='flex md:pl-3 flex-col w-2/3 text-center md:text-left'>
        <span className=' font-semibold text-md'>{name}</span>
        <span className='text-gray-400 text-xs'>{spacial_at}</span>
        <Link to={`single/${_id}`} className='text-grad-to text-xs mt-2 md:text-left'>View profile</Link>
      </div>
    </div>
  )
}

此代码成功将我带到路线,但我无法获取 id参数在 <SingleTeacher />路线。这是我的SingleTeacher.js文件:

export default function SingleTeacher() {
    console.log(useParams());
  return (
    <div>SingleTeacher</div>
  )
}

但它无法将任何信息记录到控制台。

最佳答案

给定:

<Route path="teachers" element={<Teachers />} >
  <Route exact path="single/:id" element={<SingleTeacher />} />
</Route>

然后,作为布局路由的 Teachers 组件似乎缺少为嵌套路由渲染 SingleTeacher 渲染 Outlet 组件。

示例:

import { Outlet } from 'react-router-dom';

const Teachers = () => {
  ....

  return (
    <>
      ....

      <Outlet /> // <-- nested routes render element here

      ....
    </>
  );
};

参见:

关于javascript - 如何在React Router v6中获取嵌套路由中的参数?它不适用于我的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73281311/

相关文章:

javascript - 将从链接传递的变量合并到 jQuery 模式中,稍后通过 ajax 发布

javascript - 绘制一个没有线边框的空心圆

javascript - 过滤多层对象的嵌套数组并返回数组中匹配的对象

javascript - Redux Store 的结构应该是什么?

javascript - 通过 id javascript 删除数组中的对象

javascript - 在移动设备上隐藏 div 和 javascript 代码

react-router - 如何从 Docusuarus 页脚链接到非 Docusaurus 定义的路线?

javascript - 有没有办法使用样式化的组件有条件地更改组件的类型?

javascript - 使用 ReactCSSTransitionGroup 附加组件进行 React Router v4 组件转换

reactjs - React.default.memo 不是一个函数(React-Native)wrapWithConnect