У меня есть такой пример:
codesandebox
Я хочу изменить значение состояния в обратном вызове, а затем использовать новое значение состояния для изменения другого состояния .
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
- нет.
Можете ли вы, ребята, помочь мне понять, почему это произошло? ? и как этого избежать чисто?
Спасибо!