当前位置:首页 > React

react两个组件如何传值

2026-01-26 05:29:05React

父组件向子组件传值

通过 props 传递数据。父组件在调用子组件时通过属性传递值,子组件通过 props 接收。

父组件示例:

import ChildComponent from './ChildComponent';

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

子组件示例:

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

子组件向父组件传值

通过回调函数实现。父组件传递一个函数给子组件,子组件调用该函数并传入参数。

父组件示例:

import ChildComponent from './ChildComponent';

function ParentComponent() {
  const handleData = (data) => {
    console.log("Received from child:", data);
  };
  return <ChildComponent onSendData={handleData} />;
}

子组件示例:

function ChildComponent({ onSendData }) {
  const sendData = () => {
    onSendData("Data from Child");
  };
  return <button onClick={sendData}>Send Data</button>;
}

兄弟组件间传值

通过状态提升(Lifting State Up)或全局状态管理(如 Context、Redux)。

状态提升示例:
父组件管理共享状态,通过 props 分发给兄弟组件。

function ParentComponent() {
  const [sharedData, setSharedData] = useState("");

  return (
    <>
      <SiblingA onUpdate={setSharedData} />
      <SiblingB data={sharedData} />
    </>
  );
}

使用 Context API 跨层级传值

适用于深层嵌套组件或全局数据共享。

创建 Context:

const MyContext = React.createContext();

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

消费 Context:

function ChildComponent() {
  const contextValue = useContext(MyContext);
  return <div>{contextValue}</div>;
}

使用 Redux 管理全局状态

适用于复杂应用的状态管理。

配置 Store:

import { createStore } from 'redux';
import rootReducer from './reducers';

const store = createStore(rootReducer);

组件中访问状态:

react两个组件如何传值

import { useSelector } from 'react-redux';

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

使用自定义事件(较少用)

通过 EventEmitter 或自定义事件总线实现非父子组件通信,但 React 官方推荐优先使用上述方法。

标签: 组件两个
分享给朋友:

相关文章

vue动态组件实现

vue动态组件实现

Vue 动态组件实现方法 使用 component 标签与 is 属性 通过 Vue 内置的 <component> 标签和 is 属性实现动态组件切换。is 的值可以是已注册的组件名或导…

elementui组件

elementui组件

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

uniapp组件

uniapp组件

uniapp组件基础概念 uniapp的组件系统基于Vue.js,支持跨平台开发(H5、小程序、App等)。组件分为内置基础组件(如<view>、<button>)和自定义组件…

vue实现组件跟随

vue实现组件跟随

Vue 实现组件跟随效果 实现组件跟随效果通常需要监听鼠标或触摸事件,动态更新组件位置。以下是几种常见实现方式: 使用鼠标事件绑定 <template> <div class=…

uniapp 滑动组件

uniapp 滑动组件

uniapp 滑动组件实现方法 使用swiper组件 uniapp内置的swiper组件可以实现滑动效果,适用于轮播图或页面切换场景。 示例代码: <swiper :indicator-d…

vue实现列表组件

vue实现列表组件

Vue 列表组件实现方法 基础列表渲染 使用 v-for 指令渲染数组数据,需配合 :key 提升性能: <template> <ul> <li v-for…