React组件通讯

目录

简介

React组件通讯常见的有4种类型:

  • 父传子

  • 子传父

  • 祖先传子孙

  • 兄弟组件之间通讯

常用的方式大致有:

  • Props

  • Event

  • Context

  • 状态提升

  • 状态管理库

父传子

Props

直接将状态传入子组件的Props中。当props改变时,子组件会重新渲染。

// app.jsx
import { useState } from "react";
import Child from "./Child";

export default function App() {
  const [num, setNum] = useState(0);
  function addNum() {
    setNum((num) => num + 1);
  }

  return (
    <div className="App">
      <Child num={num} />
      <button onClick={addNum}>+ 1</button>
    </div>
  );
}

// child.jsx
export default function Child(props) {
  return <div>{props.num}</div>;
}

子传父

Event

import { useState } from "react";
import Child from "./Child";

export default function App() {
  const [num, setNum] = useState(0);
  function addNum(num) {
    setNum(num);
  }

  return (
    <div className="App">
      <Child num={num} addNum={addNum} />
    </div>
  );
}

祖先传子孙

Context

兄弟组件之间

状态提升

react并没有提供兄弟组件之间的通讯方法,要实现兄弟组件通讯,通常是进行状态提升,即将状态提升到两个兄弟组件的父组件中。

状态管理库

最后更新于