当前位置:首页 > React

react中组件间如何传值

2026-01-25 21:50:15React

父子组件传值

父组件通过 props 向子组件传递数据。子组件通过 this.props(类组件)或直接通过参数(函数组件)接收数据。

父组件示例:

import ChildComponent from './ChildComponent';

function ParentComponent() {
  const data = "Hello from Parent";
  return <ChildComponent message={data} />;
}

子组件示例(函数组件):

function ChildComponent({ message }) {
  return <div>{message}</div>;
}

子组件向父组件传值

通过父组件传递回调函数给子组件,子组件调用回调函数并传递数据。

父组件示例:

function ParentComponent() {
  const handleData = (data) => {
    console.log(data); // 接收子组件数据
  };
  return <ChildComponent onSendData={handleData} />;
}

子组件示例:

function ChildComponent({ onSendData }) {
  const sendData = () => {
    onSendData("Data from Child");
  };
  return <button onClick={sendData}>Send Data</button>;
}

兄弟组件传值

通过状态提升(Lifting State Up)到共同的父组件,或使用全局状态管理工具(如 Redux、Context API)。

react中组件间如何传值

示例(状态提升):

function ParentComponent() {
  const [sharedData, setSharedData] = useState("");

  return (
    <>
      <SiblingA onDataChange={setSharedData} />
      <SiblingB data={sharedData} />
    </>
  );
}

Context API 跨层级传值

创建 Context 并提供数据,子组件通过 useContextContext.Consumer 获取数据。

创建 Context:

const MyContext = React.createContext();

function App() {
  return (
    <MyContext.Provider value="Global Data">
      <ChildComponent />
    </MyContext.Provider>
  );
}

使用 Context(函数组件):

react中组件间如何传值

function ChildComponent() {
  const data = useContext(MyContext);
  return <div>{data}</div>;
}

Redux 全局状态管理

适用于复杂应用,通过 store 管理状态,组件通过 useSelectoruseDispatch 读写数据。

配置 Store:

import { createStore } from 'redux';
import { Provider } from 'react-redux';

const store = createStore(rootReducer);

function App() {
  return (
    <Provider store={store}>
      <ComponentA />
    </Provider>
  );
}

组件中使用:

import { useSelector, useDispatch } from 'react-redux';

function ComponentA() {
  const data = useSelector(state => state.data);
  const dispatch = useDispatch();

  const updateData = () => {
    dispatch({ type: 'UPDATE_DATA', payload: "New Data" });
  };

  return <button onClick={updateData}>Update</button>;
}

使用事件总线(Event Emitter)

通过第三方库(如 events)实现发布-订阅模式,适用于非父子组件通信。

示例:

import { EventEmitter } from 'events';
const eventBus = new EventEmitter();

// 发布事件
eventBus.emit("dataEvent", "Some Data");

// 订阅事件
eventBus.on("dataEvent", (data) => {
  console.log(data);
});

标签: 组件react
分享给朋友:

相关文章

react native如何启动

react native如何启动

React Native 启动步骤 确保已安装 Node.js(建议版本 14 或更高)和 npm/yarn。安装完成后,通过命令行工具执行以下操作。 初始化新项目 使用 React Native…

vue实现倒计时组件

vue实现倒计时组件

Vue 倒计时组件实现 核心思路 通过 setInterval 或 setTimeout 实现时间递减,结合 Vue 的响应式数据更新 UI。需注意组件销毁时清除定时器。 基础实现方案 模板部分…

vue实现下拉刷新组件

vue实现下拉刷新组件

Vue 下拉刷新组件实现 核心思路 通过监听 touch 事件计算滑动距离,结合 CSS 过渡动画实现下拉效果,触发刷新回调。 基础实现步骤 监听 touch 事件 在组件 mounted 阶段绑定…

如何手写一个react

如何手写一个react

手写一个简单的 React 创建一个基础的 React 实现需要理解其核心概念:虚拟 DOM、组件、状态管理和渲染。以下是一个简化版的 React 实现。 创建虚拟 DOM 虚拟 DOM 是真实 D…

react如何调试

react如何调试

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

react如何debugger

react如何debugger

调试 React 应用的方法 使用浏览器开发者工具进行调试 React 开发者工具(React DevTools)是调试 React 应用的必备工具。安装 Chrome 或 Firefox 扩展后,可…