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);
}}
CodePudding user response:
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).
CodePudding user response:
try this:
const [pressedImages, setPressedImages] = useState([]);
...
onLongPress={() => {
const cloneArray = [...pressedImages];
cloneArray.push({ [index]: true });
setPressedImages(cloneArray);
}}
console.log('Updated pressedImages:', pressedImages);