React状态的持久性?

143 阅读2分钟
  1. 状态的持久性(state 的更新)
  • React 的状态 (state) 是与组件的生命周期绑定的,即当组件重新渲染时,React 会保留最新的状态值,直到你显式地更新它。
  • 如何触发重新渲染?
  • 当组件的 state 发生变化时,React 会触发重新渲染。
  • 当你调用 setState(类组件)或者 setState(函数组件中的 useState)时,React 会更新组件的 state。重新渲染组件,并将更新后的 state 传递给组件的 JSX。
  1. State 的持久性:
  • 当组件重新渲染时,React 会保留组件的 state(状态)。这意味着,除非你显式地更新状态,重新渲染并不会改变 state 的值。
import React, { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0); // 初始状态为 0

  const handleClick = () => {
    setCount(count + 1);  // 每次点击按钮,count 增加 1
  };

  console.log('组件渲染了');

  return (
    <div>
      <p>当前计数:{count}</p>
      <button onClick={handleClick}>增加</button>
    </div>
  );
}

export default Counter;

  1. 状态持久性分析:
  • useState(0):初始化时,count 为 0。
  • 点击按钮:每次点击按钮,handleClick 会调用 setCount(count + 1),将 count 增加 1。
  • 渲染:每次 count 更新后,组件会 重新渲染。但 count 的值不会丢失,它会保持最新的值。
  • 为什么 state 不会丢失? React 会在 组件的每次渲染之间 保持状态的最新值。例如,在上面的代码中: 初始渲染时,count 为 0。 每次点击按钮后,count 会递增,并且状态会保存在组件中,直到你显式地更新它。
  1. state 是组件特有的:
  • 每个组件的 state 是独立的,并且与其他组件的 state 不共享。 当组件重新渲染时,状态不会丢失,而是会保留并更新最新的值。
  1. React 的优化:
  • React 会在渲染时 复用 组件的状态,优化性能。只要状态发生变化,React 才会重新渲染组件。
  • 在重新渲染时,React 会比较新旧的 state 和 props,如果它们没有发生变化,React 会跳过渲染,保持现有的渲染结果。
  1. state 和重新渲染的关系:
  • 当你更新组件的 state 时,React 会通过 虚拟 DOM 比较旧的和新的 UI 树,并决定是否需要重新渲染组件。
  • 如果 state 改变,React 会触发组件的重新渲染,并重新计算 JSX。
  1. 总结:
  • 当组件重新渲染时,React 会保持 state 的值,并根据 state 更新组件的 UI。
  • React 的状态是持久的,重新渲染不会导致 state 丢失或重置,除非显式更新。
  • 状态更新会导致组件重新渲染,从而更新 UI。