ErrorPro / react-google-autocomplete

React components for google places API.
MIT License
462 stars 114 forks source link

State is reset when autocomplete is called #204

Open santiagomed opened 1 year ago

santiagomed commented 1 year ago

I am using the Autocomplete component and when onPlaceSelected I am saving the place into a state array (input) of the parent component. However, whenever a place is selected the previous value is set to an empty array and then adds the new selected place, instead of adding it to the existing array. I am thinking it has something to do with refs, but I'm not sure how to start fixing it. Any help or advice would be appreciated.

Example:

1. inputs = [place1];
2. onPlaceSelected={(place2) => {
          console.log(inputs); // prints empty array
          addInput(place2);
}}
4. input = [place2]; // should be input = [place1, place2]

// addInput basically does this
function addInput(place) {
          setInputs[...inputs, place]l;
}
bsaff commented 3 months ago

Experiencing something similar. The onPlaceSelected encapsulates a stale version of my parent state. I'd expect the function to get updated with the latest as props change, but it remains stale.

More on this mentioned here #168

santiagomed commented 3 months ago

@bsaff are you using prev state when updating your state? This was my issue back then. So basically

setInputs(prev => [...prev, newInput])