当前位置:首页 > React

react如何实现页面跳转值

2026-01-25 05:45:28React

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

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

通过 URL 参数传值

利用 useParamsuseSearchParams 传递简单参数:

react如何实现页面跳转值

// 发送方组件
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>
  );
}

路由配置注意事项

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

react如何实现页面跳转值

<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);

分享给朋友:

相关文章

h5如何实现定位

h5如何实现定位

使用HTML5 Geolocation API HTML5提供了Geolocation API,可以获取用户的地理位置信息。通过navigator.geolocation对象实现,支持获取经纬度、海拔…

java如何实现多态

java如何实现多态

多态的概念 多态是面向对象编程的三大特性之一(封装、继承、多态),指同一操作作用于不同对象时,可以产生不同的行为。Java中主要通过方法重写(Override)和接口/抽象类实现多态。 实现多态的三…

java如何实现多线程

java如何实现多线程

实现多线程的方法 在Java中,实现多线程主要有两种方式:继承Thread类和实现Runnable接口。此外,还可以使用ExecutorService等高级工具类来管理线程。 继承Thread类 通…

react如何页面跳转

react如何页面跳转

React 页面跳转方法 在 React 中实现页面跳转有多种方式,具体取决于项目使用的路由库(如 React Router)或状态管理工具。以下是常见的几种方法: 使用 React Router…

vue如何实现录音

vue如何实现录音

使用Web Audio API实现录音 在Vue中实现录音功能可以通过Web Audio API结合MediaRecorder API来完成。以下是一个基础实现方案: 安装必要的依赖: npm i…

vue如何实现轮播

vue如何实现轮播

使用 Vue 实现轮播 使用第三方库(推荐) Vue 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper。以下是使用 vue-awesome-swiper 的示…