当我单击运行函数login
的按钮时,第一次hooks(状态)logged
的值为0
。我希望它有价值1
const [logged, setLogged] = React.useState(0);
const login = () => {
if (tempLogin.login === "Login" && tempLogin.password == "Haslo") {
setLogged(logged => logged + 1);
console.log(logged);
}
答案 0 :(得分:0)
您正在正确更新!请记住,只是在错误的位置登录,钩子值会在下一个render
上更新,因此您正在console.log
内调用login
登录执行时logged
尚未更新
const Component = () =>{
const [logged, setLogged] = React.useState(0);
const login = () => {
if (tempLogin.login === "Login" && tempLogin.password == "Haslo") {
setLogged(logged => logged + 1);
}
//Component's body
console.log(logged) // 0, 1
return <div>{logged}</div>
}
答案 1 :(得分:0)
这可以帮助:
const [logged, setLogged] = React.useState(0); const login = () => {
if (tempLogin.login === "Login" && tempLogin.password == "Haslo") {
setLogged(logged + 1);
console.log(logged);
}
答案 2 :(得分:0)
public Entry(BiFunction<MyObject, MyObject, MyObject> func) {
}
是异步的,不会立即更新状态,相反,您将在下一个渲染中看到更新后的状态。
您可以使用setLogged
(它告诉React您的组件在渲染后需要做些事情)来查看useEffect
的新值:
logged