React 的 useState
是一个 Hook,它允许你在函数组件中添加状态。useState
接受一个初始状态值,并返回一个包含两个元素的数组:当前状态和一个用于更新状态的函数。
useState
可以使组件的状态管理更加简洁和直观。useState
的使用方式非常直观,易于理解和维护。useState
可以接受任何类型的初始值,包括基本类型(如字符串、数字、布尔值)和复杂类型(如对象、数组)。
useState
适用于需要在函数组件中管理状态的场景,例如:
假设我们有一个按钮,点击按钮后会切换 isActive
状态,并且记录按钮是否曾经被激活过。
import React, { useState } from 'react';
function ToggleButton() {
const [isActive, setIsActive] = useState(false);
const [hasActivatedOnce, setHasActivatedOnce] = useState(false);
const handleClick = () => {
setIsActive(!isActive);
if (!hasActivatedOnce) {
setHasActivatedOnce(true);
}
};
return (
<div>
<button onClick={handleClick}>
{isActive ? 'Active' : 'Inactive'}
</button>
{hasActivatedOnce && <p>Button has been activated at least once.</p>}
</div>
);
}
export default ToggleButton;
useState
更新状态后组件没有重新渲染?原因:
解决方法:
setIsActive
和 setHasActivatedOnce
的新值与当前值不同。const handleClick = () => {
setIsActive(prevIsActive => !prevIsActive);
setHasActivatedOnce(prevHasActivatedOnce => !prevHasActivatedOnce);
};
通过这种方式,可以确保每次状态更新时都会创建新的引用,从而触发组件的重新渲染。
领取专属 10元无门槛券
手把手带您无忧上云