仅当状态值因上次更新而实际更改时,才会出现此问题。
在下面的例子中,当第一次点击按钮时,“setState”被调用了一个新的值(12),并且发生了一个组件更新,这是可以理解的。
当我第二次单击同一个按钮时,将状态设置为相同的 12 值会导致组件重新运行(重新渲染),为什么会发生这种情况是我的主要问题。
任何后续设置为 12 相同值的 setState 都不会触发组件更新,这也是可以理解的。12 === 12 所以不需要更新。
那么,为什么第二次单击按钮时会发生更新?
export default function App() {
const [state, setState] = useState(0);
console.log("Component updated");
return (
<div className="App">
<h1>Hello CodeSandbox {state}</h1>
<button onClick={() => setState(12)}>Button</button>
</div>
);
}