props 的变动,是否会引起 state hook 中数据的变动?


在 React 中,propsstate 是两个不同的概念,它们有不同的目的和用法。变动 props 不会直接引起 state 的变动,因为它们是不同的数据源。

1. props

  • props(即属性)是组件之间通信的一种方式,用于从父组件传递数据到子组件。
  • props 是不可变的,即一旦传递给子组件,子组件无法直接修改它们。
  • 当父组件中的 props 发生变化时,React 会重新渲染子组件,并传递新的 props

2. state

  • state 是用于保存组件内部状态的机制。
  • 使用 useState hook 或 class 组件中的 this.setState 来管理组件的 state
  • 当组件的 state 发生变化时,React 会触发重新渲染组件。

示例:

import React, { useState, useEffect } from 'react';

function MyComponent(props) {
  // 使用 state hook 定义内部状态
  const [count, setCount] = useState(0);

  // 当 props 发生变化时,可以在 useEffect 中处理
  useEffect(() => {
    // 执行一些操作,例如根据新的 props 更新组件的 state
    setCount(props.initialCount);
  }, [props.initialCount]); // 仅在 props.initialCount 发生变化时触发 useEffect

  return (
    <div>
      <p>Count: {count}</p>
    </div>
  );
}

export default MyComponent;

在上面的例子中,当 props.initialCount 发生变化时,我们使用 useEffect 来更新组件的内部状态 count。这并不是 props 直接影响 state,而是通过 useEffect 实现了在 props 变动时更新组件状态的逻辑。


原文链接:codingdict.net