当前位置:首页 > React

react如何通信

2026-03-30 17:56:13React

React 组件通信方式

父组件向子组件传递数据
通过 props 传递数据,子组件通过 this.props(类组件)或直接解构(函数组件)接收。
示例:

// 父组件
<ChildComponent message="Hello from parent" />

// 子组件(函数组件)
function ChildComponent({ message }) {
  return <div>{message}</div>;
}

子组件向父组件传递数据
父组件通过 props 传递回调函数,子组件调用该函数并传参。
示例:

// 父组件
function handleData(data) {
  console.log(data);
}
<ChildComponent onData={handleData} />

// 子组件
<button onClick={() => props.onData("Child data")}>Send</button>

兄弟组件通信
通过提升状态到共同的父组件,或使用全局状态管理工具(如 Redux、Context API)。
示例(状态提升):

// 父组件
const [sharedData, setSharedData] = useState("");
<ChildA onData={setSharedData} />
<ChildB data={sharedData} />

Context API 跨层级通信

创建 Context 并包裹组件树,子组件通过 useContextContext.Consumer 访问数据。
示例:

const MyContext = React.createContext();

// 提供者
<MyContext.Provider value={{ data, setData }}>
  <ChildComponent />
</MyContext.Provider>

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

事件总线(Event Bus)

适用于非父子组件通信,通过自定义事件订阅和触发。
示例:

// 创建事件总线
const EventBus = { on: (event, cb) => {}, emit: (event, data) => {} };

// 组件A(订阅)
EventBus.on("event", (data) => {});

// 组件B(触发)
EventBus.emit("event", data);

状态管理库(Redux/Zustand)

适用于复杂应用,集中管理状态并通过 dispatchhooks 通信。
Redux 示例:

// 定义 action 和 reducer
const increment = () => ({ type: "INCREMENT" });

// 组件中触发
dispatch(increment());

Refs 和回调函数

通过 ref 直接访问子组件实例或 DOM 元素。
示例:

react如何通信

// 父组件
const childRef = useRef();
<ChildComponent ref={childRef} />

// 子组件(需使用 forwardRef)
const ChildComponent = forwardRef((props, ref) => {
  useImperativeHandle(ref, () => ({ method: () => {} }));
});

总结

  • 简单场景:props 和回调函数。
  • 跨层级:Context API 或状态管理库。
  • 非父子:事件总线或全局状态。
  • 直接操作:refs(谨慎使用)。

标签: 通信react
分享给朋友:

相关文章

vue实现udp通信

vue实现udp通信

Vue 中实现 UDP 通信的方法 由于浏览器环境的安全限制,JavaScript 无法直接通过 Web API 实现 UDP 通信。但可以通过以下方法间接实现: 使用 WebSocket 中转 在…

电脑如何安装react

电脑如何安装react

安装 Node.js 和 npm React 依赖于 Node.js 和 npm(Node Package Manager)。从 Node.js 官网下载并安装最新稳定版本,安装完成后会自动包含 np…

如何优化react

如何优化react

优化 React 性能的方法 使用 React.memo 或 PureComponent 对于函数组件,使用 React.memo 进行记忆化,避免不必要的重新渲染。类组件可以使用 PureCompo…

react如何动画

react如何动画

React 动画实现方法 React 中实现动画可以通过多种方式,包括原生 CSS、第三方库或 React 内置的动画解决方案。以下是几种常见方法: 使用 CSS 动画和过渡 通过 CSS 的 tr…

如何启动react

如何启动react

安装Node.js 确保系统已安装Node.js(建议使用LTS版本),可通过官网下载并安装。安装完成后,在终端运行以下命令验证版本: node -v npm -v 创建React项目 使用官方工具…

react如何刷新

react如何刷新

刷新React组件的方法 使用状态更新触发重新渲染 通过更新组件的状态可以触发重新渲染。React会在状态变化时自动重新渲染组件。 const [count, setCount] = useStat…