当前位置:首页 > React

react如何实现页面跳转值

2026-01-25 05:45:28React

使用 React Router 实现页面跳转传值

React 中实现页面跳转传值主要通过 react-router-dom 库完成。以下是几种常见方法:

通过 URL 参数传值

利用 useParamsuseSearchParams 传递简单参数:

// 发送方组件
import { useNavigate } from 'react-router-dom';

function Sender() {
  const navigate = useNavigate();

  const handleClick = () => {
    navigate('/receiver/123'); // 路径参数
    // 或 navigate('/receiver?id=123'); // 查询参数
  };

  return <button onClick={handleClick}>跳转</button>;
}
// 接收方组件(路径参数)
import { useParams } from 'react-router-dom';

function Receiver() {
  const { id } = useParams();
  return <div>接收到的ID: {id}</div>;
}
// 接收方组件(查询参数)
import { useSearchParams } from 'react-router-dom';

function Receiver() {
  const [searchParams] = useSearchParams();
  const id = searchParams.get('id');
  return <div>接收到的ID: {id}</div>;
}

通过 state 传值

使用 navigate 的第二个参数传递复杂对象:

// 发送方
function Sender() {
  const navigate = useNavigate();

  const handleClick = () => {
    navigate('/receiver', {
      state: { 
        user: { name: 'John', age: 25 },
        timestamp: Date.now()
      }
    });
  };

  return <button onClick={handleClick}>跳转</button>;
}
// 接收方
import { useLocation } from 'react-router-dom';

function Receiver() {
  const location = useLocation();
  const { user, timestamp } = location.state || {};

  return (
    <div>
      用户信息: {user?.name}, {user?.age}
      <br />
      时间戳: {timestamp}
    </div>
  );
}

路由配置注意事项

确保路由配置正确匹配参数模式:

<Routes>
  <Route path="/receiver/:id" element={<Receiver />} />
  <Route path="/receiver" element={<Receiver />} />
</Routes>

类型安全传值(TypeScript)

为传递的值添加类型定义:

type RouteState = {
  user: {
    name: string;
    age: number;
  };
  timestamp: number;
};

// 发送方
navigate('/receiver', {
  state: {
    user: { name: 'John', age: 25 },
    timestamp: Date.now()
  } as RouteState
});

// 接收方
const location = useLocation();
const state = location.state as RouteState;

使用 Context 跨组件传值

对于需要深层传递或全局共享的数据:

const DataContext = createContext();

// 上层组件
<DataContext.Provider value={{ sharedData: 'value' }}>
  <App />
</DataContext.Provider>

// 任意子组件
const { sharedData } = useContext(DataContext);

react如何实现页面跳转值

分享给朋友:

相关文章

vue实现前端跳转

vue实现前端跳转

Vue 实现前端跳转的方法 在 Vue 中实现前端跳转通常使用 Vue Router,以下是几种常见的跳转方式: 声明式导航(模板中使用 <router-link>) 在模板中直接使用…

vue如何实现tap

vue如何实现tap

实现Tap事件的方法 在Vue中实现类似移动端的tap事件(轻触)可以通过以下几种方式完成。原生移动端浏览器通常通过touchstart和touchend事件组合模拟tap,而Vue中可以封装自定义指…

vue文件实现页面跳转

vue文件实现页面跳转

使用 router-link 实现跳转 在 Vue 模板中直接使用 <router-link> 组件,通过 to 属性指定目标路径: <router-link to="/tar…

java如何实现异步

java如何实现异步

Java实现异步的方法 Java中实现异步编程可以通过多种方式,每种方式适用于不同的场景和需求。以下是常见的实现方法: 使用Thread类 创建新线程执行异步任务是最基础的方式。通过继承Threa…

react如何实现分页

react如何实现分页

实现分页的基本思路 在React中实现分页通常需要以下几个核心步骤:管理当前页码状态、计算分页数据、渲染分页控件。以下是一个典型的分页实现方法。 管理分页状态 使用React的useState钩子来…

vue实现内部跳转

vue实现内部跳转

Vue 实现内部跳转的方法 在 Vue 中实现内部跳转通常涉及路由导航,以下是几种常见方式: 使用 <router-link> 组件 <router-link to="/path…