skip to Main Content

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


  1. 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).

    Login or Signup to reply.
  2. try this:

    const [pressedImages, setPressedImages] = useState([]);
    ...
    onLongPress={() => {
       const cloneArray = [...pressedImages];
       cloneArray.push({ [index]: true });
       setPressedImages(cloneArray);
    }}
    
    console.log('Updated pressedImages:', pressedImages);
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search