Это происходит потому, что состояние не обновляется сразу. Когда вызывается функция, selectedState объявляется и не изменяется до следующего вызова (обновления).
Вы можете, если хотите наблюдать изменения selectedState с useEffect
, или создать пользовательский хук, чтобы сделать это следующим образом это:
// works like the React class setState, but the callback is called passing the new State
function useStateCallback(initialState) {
const [[state, cb], setState] = useState([initialState, null]);
useEffect(
() => {
cb && cb(state);
},
[state]
);
const setStateCallback = (value, callback) => setState([value, callback]);
return [state, setStateCallback];
}
function App() {
const [val, setVal] = useStateCallback(0);
const increment = () =>
setVal(val + 1, newVal => alert("Incremented: " + newVal));
}