У Вас нет проблемы, которую Вы описали, потому что это работает несколько не так, как Вы, я полагаю, думаете.
const Logic = () => {
const [inputValues, setInputValues] = useState('');
console.log('1)', inputValues);
const onChangeInput = e => {
setInputValues((currentState) => {
console.log('2) current', currentState);
return e.target.value});
console.log('3)', inputValues);
};
return <View inputValues={inputValues} onChangeInput={onChangeInput} />;
};
// Будем вводить букву 'a' в инпут. В итоге в консоле получим:
// 1)"" <-- из-за useState('');
// 2) current "" <-- так как значение мы ещё не обновили, то получаем то же начальное значение из useState('');
// 3) "" <-- вызвывается ПОСЛЕ setInputValues, тем не менее, имеет ещё не обновлённое значение.
// 1) a <-- произошло изменение состояния, компонент перерисовался.
Дальше, в заивисимости от того, что Вы хотите сделать,
выводите значение либо в "1)" - это вывод с новым state но перед перерисовкой,
либо в "3)" Вам нужно выводить e.target.value.
Операция изменения состояния - асинхронная и реакт может собирать несколько изменений состояния в одно для оптимизации.