Can someone explain why the output of following code is 0 and not 666? I'm assuming onSuccess callback is somehow using stale data, but I don't think that is desirable.
import "./styles.css";
import { useQuery, useMutation } from "react-query";
import { useState } from "react";
export default function App() {
const [count, setCount] = useState(0);
const { mutate } = useMutation(
[count],
() => {
return new Promise((resolve) => {
setTimeout(() => resolve("data"), 5000);
});
},
{
onSuccess: (data) => {
console.log(count);
}
}
);
return (
<div className="App">
<button
onClick={() => {
mutate();
setTimeout(() => {
setCount(666);
}, 2000);
}}
>
Button
</button>
</div>
);
}
I expect onSuccess to use latest value for count state variable