setChosenPicture(fileName);
setTimeout(() => {
console.log(chosenPicture);
}, 5000);
Этот код не будет работать как вы хотите. Стейт не меняется мгновенно, новое значение будет в следующей итерации рендера, проще говоря при следующем вызове функции-компонента.
Я не знаю, что вы хотите сделать с chosenPicture, но вывести значение в консоль вы можете так:
const [chosenPicture, setChosenPicture] = useState('');
console.log(chosenPicture) // после обновления стейта в консоль выведется новое значение
const handleShowFloatingPicture = (index, fileName, width, height, element) => {
setChosenPicture(fileName);
setTimeout(() => {
console.log(chosenPicture); // здесь старое значение, потому что функция вызвалась только один раз
// и на момент вызова там была пустая строка
}, 5000);
}
Сделать что-то со значением можно через useEffect:
const [chosenPicture, setChosenPicture] = useState('');
useEffect(() => {
if (chosenPicture) {
console.log(chosenPicture)
}
}, [chosenPicture]) // это массив завимостей, useEffect вызывает свой коллбэк каждый раз при изменении завимостей
const handleShowFloatingPicture = (index, fileName, width, height, element) => {
setChosenPicture(fileName);
}