当前位置:首页 > 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} />;
}

子组件示例:

react两个组件如何传值

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:

react两个组件如何传值

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);

组件中访问状态:

import { useSelector } from 'react-redux';

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

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

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

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

相关文章

vue实现折叠组件

vue实现折叠组件

实现折叠组件的基本思路 在Vue中实现折叠组件通常需要利用动态绑定和条件渲染。核心是通过控制一个布尔值状态来决定内容是否显示,并添加过渡动画提升用户体验。 基础实现方法 使用v-show或v-if控…

vue动态组件实现

vue动态组件实现

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

vue table组件实现

vue table组件实现

Vue 表格组件实现方案 基础表格实现 使用<table>标签结合v-for指令渲染数据是最简单的实现方式: <template> <table> &…

vue实现路由组件

vue实现路由组件

Vue 实现路由组件的方法 在 Vue 中实现路由功能通常需要结合 Vue Router 库,以下是具体实现步骤: 安装 Vue Router 通过 npm 或 yarn 安装 Vue Router…

vue实现组件刷新

vue实现组件刷新

强制重新渲染组件 使用 this.$forceUpdate() 方法可以强制 Vue 实例重新渲染,但不会更新子组件。适用于依赖非响应式数据的情况。 methods: { refreshComp…

vue组件实现返回

vue组件实现返回

实现返回功能的 Vue 组件方法 监听浏览器返回事件 通过 window.addEventListener('popstate', callback) 监听浏览器返回按钮事件,在回调函数中执行自定义逻…