当前位置:首页 > 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
分享给朋友:

相关文章

如何删除react

如何删除react

卸载 React 项目依赖 打开项目根目录下的 package.json 文件,删除所有包含 react、react-dom 或其他 React 相关库的依赖项。保存文件后运行以下命令: npm u…

电脑如何安装react

电脑如何安装react

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

react如何开发组件

react如何开发组件

React 组件开发基础 React 组件分为函数组件和类组件两种形式。函数组件是现代 React 开发的主流方式,结合 Hooks 可以实现完整功能。 函数组件示例: function Gree…

react性能如何

react性能如何

React 性能特点 React 通过虚拟 DOM(Virtual DOM)和高效的 diff 算法优化性能。虚拟 DOM 减少了直接操作真实 DOM 的开销,仅在必要时更新变化的部分。React 的…

如何改造react

如何改造react

改造 React 项目的关键方法 分析当前项目结构 通过评估现有组件、状态管理和依赖项,明确需要改进的部分。使用工具如 webpack-bundle-analyzer 识别性能瓶颈。 升级 Reac…

react如何调试

react如何调试

调试 React 应用的方法 使用 React Developer Tools React Developer Tools 是 Chrome 和 Firefox 的浏览器扩展,可以检查组件树、状态和…