当前位置:首页 > 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 moment如何使用

react moment如何使用

安装 react-moment 通过 npm 或 yarn 安装 react-moment: npm install react-moment 或 yarn add react-moment 基本…

react 如何分页

react 如何分页

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

react如何运行

react如何运行

运行React项目的步骤 安装Node.js 确保系统已安装Node.js(建议版本12以上),可从官网下载并安装。Node.js自带npm包管理器,用于后续依赖安装。 创建React项目 使用官方…

react如何分

react如何分

React 分页实现方法 在 React 中实现分页功能可以通过多种方式完成,以下是几种常见的方法: 使用状态管理分页数据 在组件内部维护当前页码和每页数据量的状态,通过计算切片数据实现分页。…

uniapp如何将底部导航组件化

uniapp如何将底部导航组件化

在 uniapp 中将底部导航组件化 将底部导航组件化可以提高代码复用性和维护性。以下是具体实现方法: 创建自定义底部导航组件 新建一个组件文件,例如 tab-bar.vue,放置在 compon…

react如何debugger

react如何debugger

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