React 中 props 和 state 的区别及其使用场景

阅读时长 5 分钟读完

React 是一种流行的 JavaScript 库,用于构建可重用的组件化用户界面。在 React 中,组件有两个非常重要的概念:props 和 state。

props 和 state 是 React 中非常重要的概念,但两者在定义和使用时有很大的区别。在本文中,我们将详细讨论这些概念的区别及其使用场景。

Props

Props 是从父组件传递给子组件的不可变的属性。也就是说,当一个组件从它的父组件中接收一个 prop 后,这个 prop 的值就不能再被它本身修改了。我们可以通过在组件中声明props来接受其传递的值。例如:

在上面的例子中,Button 组件接受一个 props 并在按钮上呈现 props.label 的值。

我们可以在组件调用时指定 props 的值。例如:

在上面的例子中,我们将 label 属性设置为 "Click me"。这个值将通过 props 传递到 Button 组件中。

State

State 是组件内部可变的状态。它表示组件在运行时的状态。一个组件可以通过调用 setState() 方法来更新它的状态。例如:

-- -------------------- ---- -------
----- ------- ------- --------------- -
  ------------------ -
    -------------

    ---------- - -
      ------ -
    --
  -

  -------- -
    ------ -
      -----
        -------------------------
        ------- ----------- -- --------------- ------ ---------------- - - ----
          ----- --
        ---------
      ------
    --
  -
-

在上面的例子中,我们定义一个 Counter 组件,它有一个 count 的状态。我们在组件中声明一个按钮,当点击按钮时,count 状态值会加1。这时我们通过调用 setState() 方法来更新组件的状态。

需要注意的是,我们不能直接修改组件的 state。这是因为当组件的 state 更新时,React 会自动重新渲染组件以反映状态的变化。例如:

区别

props 和 state 在 React 中有很大的不同,主要区别如下:

  1. Props 是从父组件传递给子组件的不可变的属性,而 state 代表了组件内部可变的状态。

  2. Props 是只读的,不能在组件中修改 props 的值,而 state 是可以被修改的。但是,我们应该避免直接修改 state。我们应该总是使用 setState() 来更新组件的状态。

  3. Props 是从父组件传递到子组件的,所以 props 是一次性的。也就是说,如果 props 的值发生变化,那么子组件的状态也需要重新渲染。但是,state 是组件内部的一个变量,当其发生变化时,组件也会重新渲染。

使用场景

通常情况下,可以通过以下准则来确定何时使用 props 和 state。

  1. 如果某个值是由父组件传递的,并且在组件的生命周期中不会发生变化,那么它应该作为 props 来传递。

  2. 如果某个值是在组件内部产生的,并且可能会在组件的生命周期中发生变化,那么它应该作为 state 来维护。

以下是使用 props 和 state 的示例:

-- -------------------- ---- -------
----- ------- ------- --------------- -
  ------------------ -
    -------------

    ---------- - -
      ----- ------
    --
  -

  -------- -
    ------ -
      -----
        ---------- -----------------------  ------- ----- -- --- ----
        ----- ---- -- ---------------------- -- ----- ----- -- --- ------
      ------
    --
  -
-

----- --- ------- --------------- -
  -------- -
    ------ -
      -----
        -------- ----------- --
      ------
    --
  -
-

在上面的例子中,我们定义了一个 Welcome 组件,它接受一个 name 的 props。我们还定义了一个 name 的状态,它的默认值为 "John"。在 Welcome 组件中,我们使用 props 呈现 "Hello, {this.props.name}!"。我们使用 state 呈现 "My name is {this.state.name}." 在 App 组件中,我们将 "Sara" 作为 name props 传递给 Welcome 组件。

总结

props 和 state 是 React 中非常重要的概念。props 是从父组件传递给子组件的不可变的属性,state 是组件内部可变的状态。我们应该始终遵循以下准则以确定何时使用 props 和 state:

  1. 如果某个值是由父组件传递的,并且在组件的生命周期中不会发生变化,那么它应该作为 props 来传递。

  2. 如果某个值是在组件内部产生的,并且可能会在组件的生命周期中发生变化,那么它应该作为 state 来维护。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/648b00de48841e9894962384

纠错
反馈