在 React 中使用 useState 声明的状态变量是不可直接修改的。React 提供了专门的更新函数(例如 setCount),用于更新状态变量的值。直接修改状态变量是无效的,并且不会触发组件重新渲染。
useState
setCount
下面是一个示例,演示了直接修改状态变量和使用更新函数的区别:
import React, { useState } from 'react'; function Counter() { // 声明状态变量 count 和对应的更新函数 setCount const [count, setCount] = useState(0); const handleClick = () => { // 错误示例:直接修改状态变量,这不会引起组件重新渲染 // count = count + 1; // 正确示例:使用更新函数,触发组件重新渲染 setCount((prevCount) => prevCount + 1); }; return ( <div> <p>Count: {count}</p> <button onClick={handleClick}>Increment</button> </div> ); }
在上述示例中,如果使用 count = count + 1; 这样直接修改 count 的方式,不会触发组件重新渲染,因为 React 不知道状态变量的变化。正确的做法是使用 setCount 更新函数,这样 React 才能追踪状态的变化并进行重新渲染。
count = count + 1;
count
总的来说,为了确保正确的状态更新和组件渲染,应始终使用 useState 提供的更新函数,而不是直接修改状态变量。
原文链接:codingdict.net