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

相关文章

vue实现组件封装

vue实现组件封装

Vue 组件封装方法 封装组件的基本步骤 创建独立的 .vue 文件,包含 template、script 和 style 三个部分。通过 props 接收父组件传递的数据,使用 $emit 触发…

vue实现穿梭框树组件

vue实现穿梭框树组件

Vue 穿梭框树组件实现 穿梭框树组件通常结合了树形结构和穿梭框功能,允许用户在左右两栏之间移动树节点数据。以下是基于 Vue 的实现方案: 核心功能设计 数据结构 树形数据通常采用嵌套结构,例如…

vue实现下拉框组件

vue实现下拉框组件

Vue 下拉框组件实现 基础实现 创建基础下拉框组件,使用v-model实现双向数据绑定: <template> <div class="dropdown"> &…

如何评价react native

如何评价react native

React Native 的优势 跨平台开发效率高:基于 JavaScript 和 React 语法,可同时开发 iOS 和 Android 应用,减少重复代码量。性能接近原生:通过原生组件渲染,性能…

react 如何执行

react 如何执行

安装 Node.js 和 npm React 开发需要 Node.js 环境,因为它提供了 npm(或 yarn)包管理工具。从 Node.js 官网 下载并安装最新 LTS 版本。安装完成后,在终端…

如何降低react版本

如何降低react版本

降低 React 项目版本的步骤 检查当前 React 版本 运行以下命令查看项目中安装的 React 当前版本: npm list react 或 yarn list react 修…