[英]useState hook in React
import React, { useState } from 'react';
import './App.css';
const app1 = () => {
let [count, setCount] = useState(10);
let initialValue = count;
const increase = () => {
setCount(count += 1);
setCount(count += 1);
}
const decrease = () => {
setCount(count -= 1);
setCount(count -= 1);
}
const resetCounter = () => {
setCount(initialValue);
console.log(initialValue);
}
return (
<div className="App">
<button onClick={increase}>+</button> {count} <button onClick={decrease}>-</button>
<div><button onClick={resetCounter}>Reset</button></div>
</div>
);
}
export default app1;
重置按钮行为不正常。 当我单击重置按钮时,不会打印初始值 10。 相反,它打印当前值。 有人可以解释并更正代码吗?
initialValue 始终是计数,这意味着它不是 10,而是当前计数。 您应该将初始值提取到一个常量之外,即:
const INITIAL_VALUE = 10;
const app1 = () => {
let [count, setCount] = useState(INITIAL_VALUE);
...
const resetCounter = () => {
setCount(INITIAL_VALUE);
}
}
import React, { useState } from 'react';
import './App.css';
const initialValue = 10;
const app1 = () => {
let [count, setCount] = useState(initialValue);
const increase = () => {
setCount(count += 1);
setCount(count += 1);
}
const decrease = () => {
setCount(count -= 1);
setCount(count -= 1);
}
const resetCounter = () => {
setCount(initialValue);
console.log(initialValue);
}
return (
<div className="App">
<button onClick={increase}>+</button> {count} <button onClick={decrease}>-</button>
<div><button onClick={resetCounter}>Reset</button></div>
</div>
);
}
export default app1;
The issue happens because react renders when you use setCount and updates the initial value everytime.
您必须用setCount((oldvalue)=> newValue)
替换对setCount(newValue)
的每次调用。 这是因为您依赖旧值来计算新值。 您可以在此处了解更多功能更新
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.