当前位置:首页 > React

react路由如何实现父子通信

2026-03-11 10:28:24React

路由参数传递

在父组件中通过路由参数传递数据给子组件。父组件通过<Link>history.push传递参数,子组件通过useParamsprops.match.params获取参数。

// 父组件传递参数
<Link to={`/child/${data}`}>跳转</Link>
// 或
history.push(`/child/${data}`);

// 子组件获取参数
const { data } = useParams();
// 或
const { data } = props.match.params;

状态提升

将状态提升到共同的父组件中,通过props传递给子组件。父组件定义状态和修改状态的方法,子组件通过props接收和调用。

react路由如何实现父子通信

// 父组件
const [state, setState] = useState('');
<ChildComponent state={state} setState={setState} />

// 子组件
const { state, setState } = props;

Context API

使用React的Context API实现跨组件通信。创建Context后,父组件作为Provider提供数据,子组件通过useContext消费数据。

react路由如何实现父子通信

// 创建Context
const MyContext = createContext();

// 父组件提供数据
<MyContext.Provider value={{ data, setData }}>
  <ChildComponent />
</MyContext.Provider>

// 子组件消费数据
const { data, setData } = useContext(MyContext);

自定义事件

通过自定义事件实现通信。父组件定义事件并暴露给子组件,子组件触发事件时父组件执行相应逻辑。

// 父组件
const handleEvent = (data) => {
  console.log(data);
};
<ChildComponent onEvent={handleEvent} />

// 子组件
props.onEvent(data);

路由渲染属性

利用路由的render或children属性直接传递props给子组件。在路由配置中通过render方法将父组件的props传递给子组件。

<Route
  path="/child"
  render={(props) => <ChildComponent {...props} parentProps={data} />}
/>

标签: 路由父子
分享给朋友:

相关文章

vue 路由实现

vue 路由实现

Vue 路由实现方法 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是实现 Vue 路由的基本步骤: 安装 Vue Router 使用 npm 或 ya…

vue实现路由组件

vue实现路由组件

Vue 实现路由组件的方法 在 Vue 中实现路由功能通常需要结合 Vue Router 库,以下是具体实现步骤: 安装 Vue Router 通过 npm 或 yarn 安装 Vue Router…

vue实现路由后退

vue实现路由后退

路由后退的实现方法 在Vue中实现路由后退功能,可以通过Vue Router提供的方法来完成。以下是几种常见的实现方式: 使用router.go()方法 // 在组件中调用 this.$route…

vue路由实现切换

vue路由实现切换

Vue 路由切换的实现方法 Vue Router 是 Vue.js 官方的路由管理器,用于实现单页应用(SPA)中的页面切换。以下是常见的路由切换方式: 声明式导航 使用 <router-li…

vue实现菜单路由

vue实现菜单路由

Vue 实现菜单路由的方法 在 Vue 中实现菜单路由通常需要结合 Vue Router 和动态路由配置。以下是几种常见的方法: 使用 Vue Router 配置路由 安装 Vue Router:…

vue实现路由监听

vue实现路由监听

路由监听实现方法 在Vue中可以通过Vue Router提供的导航守卫或响应式属性监听路由变化,以下是具体实现方式: 使用全局前置守卫 在路由配置文件中添加beforeEach钩子,适用于全局路由跳…