当前位置:首页 > React

react标签间如何传递值

2026-03-11 09:03:02React

父组件向子组件传递值

父组件通过 props 向子组件传递数据。在父组件中,将数据作为属性传递给子组件,子组件通过 props 接收。

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

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

子组件向父组件传递值

子组件通过回调函数向父组件传递数据。父组件定义一个函数,通过 props 传递给子组件,子组件调用该函数并传递数据。

// 父组件
function ParentComponent() {
  const handleData = (data) => {
    console.log(data); // 输出: "Hello from Child"
  };
  return <ChildComponent onData={handleData} />;
}

// 子组件
function ChildComponent(props) {
  const sendData = () => {
    props.onData("Hello from Child");
  };
  return <button onClick={sendData}>Send Data</button>;
}

兄弟组件间传递值

兄弟组件间可以通过共同的父组件传递数据。一个子组件通过回调函数将数据传递给父组件,父组件再通过 props 传递给另一个子组件。

// 父组件
function ParentComponent() {
  const [data, setData] = useState("");

  const handleData = (newData) => {
    setData(newData);
  };

  return (
    <>
      <ChildComponentA onData={handleData} />
      <ChildComponentB data={data} />
    </>
  );
}

// 子组件A
function ChildComponentA(props) {
  const sendData = () => {
    props.onData("Data from A");
  };
  return <button onClick={sendData}>Send Data</button>;
}

// 子组件B
function ChildComponentB(props) {
  return <div>{props.data}</div>;
}

使用 Context API 跨层级传递值

Context 适用于跨多层组件传递数据,避免逐层传递 props

// 创建 Context
const MyContext = React.createContext();

// 父组件提供数据
function ParentComponent() {
  return (
    <MyContext.Provider value="Context Data">
      <ChildComponent />
    </MyContext.Provider>
  );
}

// 子组件消费数据
function ChildComponent() {
  const data = useContext(MyContext);
  return <div>{data}</div>;
}

使用状态管理库(如 Redux)

对于复杂应用,可以使用 Redux 或 Zustand 等状态管理库共享数据。

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

function ComponentA() {
  const dispatch = useDispatch();
  const sendData = () => {
    dispatch({ type: "SET_DATA", payload: "Redux Data" });
  };
  return <button onClick={sendData}>Send Data</button>;
}

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

使用自定义事件或 Pub/Sub 模式

通过事件总线或发布订阅模式实现组件间通信,适用于非父子关系的组件。

react标签间如何传递值

// 使用 events 库示例
import { EventEmitter } from "events";
const eventBus = new EventEmitter();

// 组件A 发布事件
function ComponentA() {
  const emitData = () => {
    eventBus.emit("dataEvent", "Event Data");
  };
  return <button onClick={emitData}>Emit Data</button>;
}

// 组件B 订阅事件
function ComponentB() {
  const [data, setData] = useState("");

  useEffect(() => {
    eventBus.on("dataEvent", (data) => {
      setData(data);
    });
    return () => eventBus.off("dataEvent");
  }, []);

  return <div>{data}</div>;
}

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

相关文章

react实现vue

react实现vue

React 实现 Vue 功能 React 和 Vue 是两种不同的前端框架,但可以通过一些方法在 React 中实现 Vue 的特性。以下是几种常见 Vue 功能在 React 中的实现方式: 双…

react moment如何使用

react moment如何使用

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

react性能如何

react性能如何

React 性能特点 React 通过虚拟 DOM(Virtual DOM)和高效的 diff 算法优化性能。虚拟 DOM 减少了直接操作真实 DOM 的开销,仅在必要时更新变化的部分。React 的…

react如何重置

react如何重置

重置 React 应用的状态 使用 useState 钩子重新初始化状态变量是最直接的方法。将状态变量重置为初始值或空值即可完成重置。 const [count, setCount] = useSt…

react 如何debug

react 如何debug

React 调试方法 使用 React Developer Tools React Developer Tools 是浏览器扩展,支持 Chrome 和 Firefox。安装后,可以在开发者工具中查看…

react如何清理

react如何清理

清理 React 项目的方法 清理未使用的依赖项 运行 npm prune 或 yarn install --production 可以移除 node_modules 中未在 package.json…