Let's say I have a RNPickerSelect component on which I switch between subcomponents.
The values of the subcomponents are 1. Flight and 2. Car
The problem is: If switch from flight to car, the state of the components inside Flight don't reset but instead keep their values. For example if I write 'Test' in the Airline Field -> I switch to Car value in the dropdown and I comeback to the Flight one, the value is still there.
Flight component:
const [routes, setRoutes] = useState<IRoute[]>([initialRoute]); {routes.map((value: IFlightRoute, index: number) => (<RouteFields airline={value.airline} setAirline={airline => setFieldValue(airline, 'airline', value.id, routes, setRoutes)}/> ))}
The setField Function that is used to reset the airline state
export const setFieldValue = ( value: string, field: string, id: number, routes: IRoute[], setRoutes: (updatedRoutes: IRoute[]) => void): void => { const updatedRoutes = routes.map(rt => { if (rt.id === id) { rt[field] = value; } return rt; }); setRoutes(updatedRoutes);};
The content of RouteFields
<FlightAirline setAirline={setAirline} airline={airline} />
And the Airline component itself
<Airline airline={airline} setAirline={setAirline} emptyField={emptyAirline} />export const Airline = ({ setAirline, airline }: AirlineProps): JSX.Element => { return (<TextInput title={getAirline +' (optional)'} value={airline} onChangeText={el => { setAirline(el); }} /> );};
I have tried to add this to the Airline component but it doesn't do the trick when I switch the RNPickerSelect value
navigation.addListener('focus', () => { setAirline(''); }); navigation.addListener('blur', () => { setAirline(''); });