当前位置:首页 > React

react组件之间如何传值

2026-01-25 00:55:44React

父子组件传值(Props)

父组件通过props向子组件传递数据。父组件中定义属性,子组件通过this.props(类组件)或直接解构(函数组件)接收。

// 父组件
function Parent() {
  const data = "Hello from Parent";
  return <Child message={data} />;
}

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

子父组件传值(回调函数)

父组件将函数作为prop传递给子组件,子组件调用该函数并传递参数实现反向通信。

// 父组件
function Parent() {
  const handleData = (data) => {
    console.log(data);
  };
  return <Child onSend={handleData} />;
}

// 子组件
function Child({ onSend }) {
  return <button onClick={() => onSend("Data from Child")}>Send</button>;
}

Context API跨层级传值

通过React.createContext创建上下文,Provider提供数据,ConsumeruseContext消费数据。

const MyContext = React.createContext();

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

function ComponentA() {
  const value = useContext(MyContext);
  return <div>{value}</div>;
}

状态管理工具(Redux/Zustand)

使用第三方库集中管理状态,各组件通过dispatch更新状态或selector获取状态。

// Redux示例
import { useSelector } from 'react-redux';

function Component() {
  const data = useSelector(state => state.data);
  return <div>{data}</div>;
}

事件总线(Event Emitter)

通过自定义事件实现任意组件间通信,适用于非父子关系的深层组件。

import EventEmitter from 'events';
const emitter = new EventEmitter();

// 发布者组件
emitter.emit("eventName", data);

// 订阅者组件
useEffect(() => {
  emitter.on("eventName", (data) => {
    console.log(data);
  });
  return () => emitter.off("eventName");
}, []);

Refs引用传递

通过forwardRef将ref传递给子组件,直接访问DOM节点或组件实例。

react组件之间如何传值

const Child = forwardRef((props, ref) => {
  return <div ref={ref}>Child</div>;
});

function Parent() {
  const ref = useRef();
  useEffect(() => {
    console.log(ref.current);
  }, []);
  return <Child ref={ref} />;
}

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

相关文章

vue实现广告组件

vue实现广告组件

Vue 实现广告组件的核心方法 数据驱动的广告内容渲染 通过 props 接收广告数据(如图片URL、跳转链接等),使用 v-bind 动态绑定属性。典型结构包含 <a> 标签嵌套 <…

如何降低react版本

如何降低react版本

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

elementui组件

elementui组件

ElementUI 组件概述 ElementUI 是一套基于 Vue.js 的桌面端组件库,提供丰富的 UI 组件,适用于快速开发中后台系统。以下是其核心组件分类及典型用法。 基础组件 Button…

react性能如何

react性能如何

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

如何选购react

如何选购react

选购 React 相关产品或服务的建议 React 是一个用于构建用户界面的 JavaScript 库,广泛应用于前端开发。以下是选购 React 相关产品(如课程、书籍、工具、组件库等)的参考方法:…

react 如何分页

react 如何分页

分页实现方法 在React中实现分页功能可以通过多种方式完成,具体取决于数据来源(如API或本地数据)和UI库的选择。以下是常见的实现方法: 使用本地数据分页 对于存储在组件状态或Context中…