- 状态的持久性(state 的更新)
- React 的状态 (state) 是与组件的生命周期绑定的,即当组件重新渲染时,React 会保留最新的状态值,直到你显式地更新它。
- 如何触发重新渲染?
- 当组件的 state 发生变化时,React 会触发重新渲染。
- 当你调用 setState(类组件)或者 setState(函数组件中的 useState)时,React 会更新组件的 state。重新渲染组件,并将更新后的 state 传递给组件的 JSX。
- State 的持久性:
- 当组件重新渲染时,React 会保留组件的 state(状态)。这意味着,除非你显式地更新状态,重新渲染并不会改变 state 的值。
import React, { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
const handleClick = () => {
setCount(count + 1);
};
console.log('组件渲染了');
return (
<div>
<p>当前计数:{count}</p>
<button onClick={handleClick}>增加</button>
</div>
);
}
export default Counter;
- 状态持久性分析:
- useState(0):初始化时,count 为 0。
- 点击按钮:每次点击按钮,handleClick 会调用 setCount(count + 1),将 count 增加 1。
- 渲染:每次 count 更新后,组件会 重新渲染。但 count 的值不会丢失,它会保持最新的值。
- 为什么 state 不会丢失?
React 会在 组件的每次渲染之间 保持状态的最新值。例如,在上面的代码中:
初始渲染时,count 为 0。
每次点击按钮后,count 会递增,并且状态会保存在组件中,直到你显式地更新它。
- state 是组件特有的:
- 每个组件的 state 是独立的,并且与其他组件的 state 不共享。
当组件重新渲染时,状态不会丢失,而是会保留并更新最新的值。
- React 的优化:
- React 会在渲染时 复用 组件的状态,优化性能。只要状态发生变化,React 才会重新渲染组件。
- 在重新渲染时,React 会比较新旧的 state 和 props,如果它们没有发生变化,React 会跳过渲染,保持现有的渲染结果。
- state 和重新渲染的关系:
- 当你更新组件的 state 时,React 会通过 虚拟 DOM 比较旧的和新的 UI 树,并决定是否需要重新渲染组件。
- 如果 state 改变,React 会触发组件的重新渲染,并重新计算 JSX。
- 总结:
- 当组件重新渲染时,React 会保持 state 的值,并根据 state 更新组件的 UI。
- React 的状态是持久的,重新渲染不会导致 state 丢失或重置,除非显式更新。
- 状态更新会导致组件重新渲染,从而更新 UI。