我有一个这样的例子:
我想在回调中修改一个状态值,然后使用新的状态值来修改另一个状态。
export default function App() {
const [count, setCount] = useState(0);
const [text, setText] = useState("0");
const [added, setAdded] = useState(false);
const aNotWorkingHandler = useCallback(
e => {
console.log("clicked");
setCount(a => ++a);
setText(count.toString());
},
[count, setCount, setText]
);
const btnRef = useRef(null);
useEffect(() => {
if (!added && btnRef.current) {
btnRef.current.addEventListener("click", aNotWorkingHandler);
setAdded(true);
}
}, [added, aNotWorkingHandler]);
return <button ref={btnRef}> + 1 </button>
但是,在调用此处理程序后,count
已成功增加,但text
没有。
你们能帮我理解为什么会这样吗?以及如何干净地避免它?
谢谢!