当前位置:首页 > React

react组件之间如何传值

2026-03-11 09:51:28React

父组件向子组件传值

通过 props 传递数据。父组件在子组件标签上定义属性,子组件通过 props 接收。

父组件示例:

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

子组件示例:

function Child(props) {
  return <div>{props.message}</div>;
}

子组件向父组件传值

通过父组件传递的回调函数实现。父组件定义函数并通过 props 传递给子组件,子组件调用该函数并传参。

父组件示例:

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

子组件示例:

react组件之间如何传值

function Child({ onSendData }) {
  const data = "Hello from Child";
  return <button onClick={() => onSendData(data)}>Send</button>;
}

兄弟组件间传值

通过共同的父组件中转。将数据提升到父组件,再通过 props 分发给兄弟组件。

父组件示例:

function Parent() {
  const [sharedData, setSharedData] = useState("");
  return (
    <>
      <SiblingA onSendData={setSharedData} />
      <SiblingB data={sharedData} />
    </>
  );
}

跨层级组件传值

使用 Context API 或状态管理库(如 Redux)。

Context API 示例:

react组件之间如何传值

const DataContext = createContext();

function App() {
  const value = "Global Data";
  return (
    <DataContext.Provider value={value}>
      <Child />
    </DataContext.Provider>
  );
}

function Child() {
  const data = useContext(DataContext);
  return <div>{data}</div>;
}

通过状态管理库传值(如 Redux)

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

示例:

// Store 中定义状态和 reducer
// 组件中调用 action 更新状态
import { useSelector, useDispatch } from 'react-redux';

function Component() {
  const data = useSelector(state => state.data);
  const dispatch = useDispatch();
  return (
    <button onClick={() => dispatch({ type: 'UPDATE_DATA', payload: 'New Data' })}>
      Update
    </button>
  );
}

通过 ref 传值

父组件通过 useRef 创建引用,传递给子组件直接访问 DOM 或实例方法。

示例:

function Parent() {
  const childRef = useRef();
  const handleClick = () => {
    childRef.current.doSomething(); // 调用子组件方法
  };
  return (
    <>
      <Child ref={childRef} />
      <button onClick={handleClick}>Trigger</button>
    </>
  );
}

const Child = forwardRef((props, ref) => {
  useImperativeHandle(ref, () => ({
    doSomething: () => console.log("Child method called")
  }));
  return <div>Child</div>;
});

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

相关文章

如何react页面

如何react页面

创建 React 页面 使用 create-react-app 快速初始化项目: npx create-react-app my-app cd my-app npm start 基础页面结构 在 s…

如何开发react

如何开发react

开发React应用的基本步骤 安装Node.js和npm 确保系统中已安装Node.js(包含npm)。可通过官网下载安装包,安装后验证版本: node -v npm -v 创建React项目…

react项目如何

react项目如何

创建React项目 使用create-react-app工具快速初始化项目。确保已安装Node.js(建议版本≥12.0.0),运行以下命令生成新项目: npx create-react-app m…

vue VUE实现日历组件功能

vue VUE实现日历组件功能

Vue 日历组件实现方法 基础日历结构 使用Vue的模板语法构建日历的HTML结构,通常包含头部(年月显示、切换按钮)和日历表格(星期标题和日期格子)。 <template> <…

vue轮播组件实现

vue轮播组件实现

vue轮播组件实现方法 使用第三方库(如Swiper) 安装Swiper库: npm install swiper 在Vue组件中引入: <template> <div cl…

react如何debugger

react如何debugger

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