React 的 useState
钩子是 React 函数组件中使用的一个基础 API,允许你在函数组件中添加 state。当你调用 useState
时,它返回一对值:当前的状态和一个更新这个状态的函数。当你调用这个更新函数时,React 会将新的状态值排入更新队列,并触发组件的重新渲染。
以下是 useState
的基本用法:
jsximport React, { useState } from 'react'; function Example() { // 声明一个新的 state 变量,我们将其称为 "count" const [count, setCount] = useState(0); return ( <div> <p>You clicked {count} times</p> <button onClick={() => setCount(count + 1)}> Click me </button> </div> ); }
在上面的例子中,每当点击按钮时,setCount
函数会被调用,使用 count + 1
作为新的状态值。这是如何触发重新渲染的:
- 调用更新状态的函数:当
setCount
被调用时,React 会将新的状态值 (count + 1
) 记录下来。 - 计划一个更新:React 将这个状态更新任务加入到其内部的更新队列中。
- 重新渲染组件:React 会开始重新渲染流程。在此过程中,它会使用更新后的状态来调用函数组件,获取最新的 JSX,并与上一个渲染的结果进行对比(这个过程称为 "reconciliation")。
- DOM 更新:如果新的 JSX 结果与上一次渲染的结果不同,React 会更新 DOM 来匹配这个新的 JSX 结果。
这个过程确保了组件能够以响应状态变化来更新其输出,从而实现了响应式 UI。由于 useState
设计为响应式的,因此只有当状态实际更改时才会触发重新渲染,如果你使用相同的状态值调用更新函数,React 会认为状态没有变化,因此可能不会触发重新渲染。
2024年6月29日 12:07 回复