当前位置:首页 > React

react组件如何传输值

2026-03-31 15:46:29React

父子组件传值(Props)

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

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

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

子向父传值(回调函数)

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

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

// 子组件
function Child({ onSendData }) {
  return <button onClick={() => onSendData("Child data")}>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等)

通过全局状态管理库实现任意组件间数据共享。

// 使用Redux示例
import { useSelector, useDispatch } from 'react-redux';

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

  return (
    <button onClick={() => dispatch({ type: 'UPDATE', payload: newData })}>
      Update
    </button>
  );
}

事件总线(Event Emitter)

通过自定义事件实现非父子组件通信,适用于复杂场景。

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

// 组件A发射事件
emitter.emit('eventName', data);

// 组件B监听事件
useEffect(() => {
  emitter.on('eventName', handleEvent);
  return () => emitter.off('eventName', handleEvent);
}, []);

Refs传值

通过useRefcreateRef获取DOM节点或组件实例,直接调用其方法。

react组件如何传输值

function Parent() {
  const childRef = useRef();

  const handleClick = () => {
    childRef.current.doSomething();
  };

  return (
    <>
      <Child ref={childRef} />
      <button onClick={handleClick}>Trigger</button>
    </>
  );
}

// 子组件需使用forwardRef
const Child = forwardRef((props, ref) => {
  useImperativeHandle(ref, () => ({
    doSomething: () => console.log('Called from parent')
  }));
  return <div>Child</div>;
});

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

相关文章

react native 如何

react native 如何

安装 React Native 开发环境 确保系统已安装 Node.js(建议版本 16 或更高)。通过以下命令安装 React Native CLI 工具: npm install -g reac…

react 如何执行

react 如何执行

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

react 如何精通

react 如何精通

掌握核心概念 深入理解React的基础概念,包括组件(函数组件与类组件)、状态(useState)、生命周期(useEffect)、Props传递、虚拟DOM与Diff算法。通过官方文档或《React…

如何监控react性能

如何监控react性能

使用 React Profiler API React 16.5 及以上版本内置了 Profiler API,可直接测量组件渲染时间。通过 <React.Profiler> 包裹目标组件,…

react如何创建项目

react如何创建项目

使用 Create React App 创建项目 Create React App (CRA) 是官方推荐的 React 项目脚手架工具,适合快速初始化一个现代化的 React 项目。 安装 C…

vue动态组件实现

vue动态组件实现

动态组件的基本用法 在Vue中,动态组件通过<component>标签和is属性实现。is属性可以绑定组件名称或组件选项对象,实现动态切换。 <template> <…