当前位置:首页 > React

react如何组件传值

2026-01-24 16:48:09React

父子组件传值(Props)

父组件通过属性(props)向子组件传递数据。子组件通过props接收父组件传递的值。

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

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

子组件向父组件传值(回调函数)

父组件通过传递回调函数给子组件,子组件调用该函数并传递数据。

// 父组件
function Parent() {
  const handleData = (data) => {
    console.log(data); // "Hello from Child"
  };
  return <Child onSendData={handleData} />;
}

// 子组件
function Child({ onSendData }) {
  return <button onClick={() => onSendData("Hello from Child")}>Send</button>;
}

兄弟组件传值(状态提升)

通过将共享状态提升到共同的父组件中,再通过props分发给子组件。

// 父组件
function Parent() {
  const [sharedData, setSharedData] = useState("");

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

// 子组件A
function SiblingA({ onDataChange }) {
  return <button onClick={() => onDataChange("Updated")}>Update</button>;
}

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

Context API(跨层级传值)

适用于深层嵌套组件或全局状态共享。

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

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

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

使用状态管理库(Redux、MobX等)

适用于复杂应用的状态管理,实现任意组件间的数据共享。

// Redux示例
// store.js
const store = createStore(reducer);

// 组件中获取和更新数据
function Component() {
  const data = useSelector((state) => state.data);
  const dispatch = useDispatch();

  return (
    <button onClick={() => dispatch({ type: "UPDATE", 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 Child</button>
    </>
  );
}

// 子组件需使用forwardRef
const Child = forwardRef((props, ref) => {
  useImperativeHandle(ref, () => ({
    doSomething: () => console.log("Child method called")
  }));

  return <div>Child</div>;
});

react如何组件传值

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

相关文章

vue实现组件循环图片

vue实现组件循环图片

Vue 中实现组件循环图片的方法 在 Vue 中,可以通过 v-for 指令循环渲染图片组件。假设有一组图片数据需要循环展示,可以采用以下方式: 数据准备 在组件的 data 或 props 中定义…

实现vue组件

实现vue组件

Vue 组件的基本实现 Vue 组件是 Vue.js 的核心特性之一,允许将 UI 拆分为独立、可复用的模块。以下是实现 Vue 组件的几种方式: 单文件组件 (SFC) 使用 .vue 文件格式,…

react native 如何

react native 如何

安装 React Native 开发环境 确保系统已安装 Node.js(建议版本 16 或更高)。通过以下命令安装 React Native CLI 工具: npm install -g reac…

如何学react

如何学react

学习 React 的基础知识 React 是一个用于构建用户界面的 JavaScript 库。学习 React 的第一步是掌握其核心概念,包括组件、状态(State)、属性(Props)和生命周期方法…

react如何

react如何

React 基础概念 React 是一个用于构建用户界面的 JavaScript 库,专注于组件化开发。通过虚拟 DOM 和高效的渲染机制,React 能够实现高性能的 UI 更新。 安装 Re…

vue实现多级组件

vue实现多级组件

Vue 多级组件实现方法 在 Vue 中实现多级组件通常涉及父子组件通信、动态组件或递归组件等技术。以下是几种常见实现方式: 父子组件嵌套 通过逐层嵌套组件实现多级结构,适用于固定层级场景:…