我用一个非常简单的例子来检查我对状态如何工作的理解。下面是一个初始值为1的简单计算器。
当我按下按钮+时,控制台显示“运行”,计算器显示“2”,当我再次按下按钮+时,控制台仍然输出“运行”,计算器显示“2”,当我继续按+时,控制台不输出任何东西。
import {useState} from "react";
const App = () => {
console.log("Run")
const [counter, setCounter] = useState(1);
console.log(counter)
const addHandler = () => {
setCounter(2);
};
const subtractHandler = () => {
setCounter(counter - 1);
};
return <div className="app">
<h1>{counter}</h1>
<button onClick={addHandler}>+</button>
<button onClick={subtractHandler}>-</button>
</div>
};
export default App;
第二个输出让我很困惑,因为我的理解是状态变量“counter”改变时state会重新呈现函数。但是,在第一次按下后,counter已经设置为“2”。当按钮+再次按下时,为什么控制台仍然输出“Run”和“2”?
2条答案
按热度按时间mklgxw1f1#
分配给按钮
onClick
事件的addHandler
不会增加counter
值,而是始终分配2
值。您可能需要访问
counter
的前一个状态值并递增其值:whhtz7ly2#
在addHandlder函数中使用console.log(“Run”),这样,每次调用addHandler函数时,控制台日志都会工作,并将计数器状态设置为: