组件间共享数据

来源: 2024-05-26 14:40:23 播报

组件间共享数据,就是把子组件同时声明的 state 向上移到父组件中,也就是说将state状态在父组件中进行声明,并通过props传递给子组件。父组件state状态发生变化,子组件也跟着变化。

export default function MyApp() {
  const [count, setCount] = useState(0);

  function handleClick() {
    setCount(count + 1);
  }

  return (
    <div>
      <h1>Counters that update separately</h1>
      <MyButton />
      <MyButton />
    </div>
  );
}

function MyButton() {
  // ... we're moving code from here ...
}

然后通过 props 传值将事件处理函数以及 state 一同向下传递到 每个子组件中。

export default function MyApp() {
  const [count, setCount] = useState(0);

  function handleClick() {
    setCount(count + 1);
  }

  return (
    <div>
      <h1>Counters that update together</h1>
      <MyButton count={count} onClick={handleClick} />
      <MyButton count={count} onClick={handleClick} />
    </div>
  );
}

子组件读取 从父组件传递来的 prop:

function MyButton({ count, onClick }) {
  return (
    <button onClick={onClick}>
      Clicked {count} times
    </button>
  );
}