React Native - useState not updating immediatly

Viewed 62

I'm trying to update my state when onLongPress triggered.
I'm printing the result right after the setState but it shows nothing (on the first press) Code:

const [pressedImagesm setPressedImages] = useState([]);
...
onLongPress={() => {
          setPressedImages(oldArray => [...oldArray, { [index]: true }]);
          console.log(pressedImages);
}}
2 Answers

That's because setPressedImages does not update the state object (pressedImages) directly. Instead, it adds this update to a queue, and the updated state is reflected on the next render of your component.

This is a pretty common React question - there's a lot of helpful content out there that explains it in more detail (such as this article or this SO question).

try this:

const [pressedImages, setPressedImages] = useState([]);
...
onLongPress={() => {
   const cloneArray = [...pressedImages];
   cloneArray.push({ [index]: true });
   setPressedImages(cloneArray);
}}

console.log('Updated pressedImages:', pressedImages);

Related