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

React Router中如何使用navigate函数传递参数?多次尝试均失败

React Router navigate传参失败的解决方法

你当前的问题是navigate函数的用法错误,第二个参数不能直接传数据,它需要是一个配置对象。以下是两种可行的传参方案:

方案一:通过state传递(不暴露在URL中)

修改导航代码:

const navigate = useNavigate();
const lessonslist = [{ name: "lesson1", id: "11" }];
// 把数据放在state字段里
navigate('/Lessons', { state: { lessonsList: lessonslist } });

在LessonsList组件中接收参数:

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

function LessonsList() {
  const location = useLocation();
  // 用可选链避免无参数时报错,默认值设为空数组
  const lessonsList = location.state?.lessonsList || [];
  // 后续业务逻辑
}

方案二:通过URL查询参数传递(暴露在URL中)

适合需要分享链接或保留参数在URL的场景,数组需要先序列化:

修改导航代码:

const navigate = useNavigate();
const lessonslist = [{ name: "lesson1", id: "11" }];
// 把数组转成JSON字符串并编码,避免URL乱码
const lessonsStr = encodeURIComponent(JSON.stringify(lessonslist));
navigate(`/Lessons?lessonsList=${lessonsStr}`);

在LessonsList组件中接收参数:

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

function LessonsList() {
  const [searchParams] = useSearchParams();
  const lessonsListStr = searchParams.get('lessonsList');
  // 解码并解析回数组,无参数时用空数组兜底
  const lessonsList = lessonsListStr ? JSON.parse(decodeURIComponent(lessonsListStr)) : [];
  // 后续业务逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:22:18