Я новичок ie в React Native и изо всех сил пытаюсь очистить состояние дочернего компонента одновременно с родителем.
Я пытаюсь сделать следующее:
- После перехода от
MainMap.js
к последнему экрану TripsListScreen.js
(весь процесс представляет собой стек из 4 экранов, вложенных в ящик), я получил все данные, хранящиеся в хранилище Redux, и отобразил их в TripsListScreen
. - . Затем я нажимаю кнопку
add
, чтобы создать новые поездки. Я успешно сбросил состояние на MainMap
. Однако состояния (value
prop of TextInput
) в компоненте PlaceInput
все еще там. Как мы можем сбросить это также?
Вот состояния MainMap.js
:
const initialState = {
hasMapPermission: false,
_userLocationDisplayed: null,
userLatitude: 0,
userLongitude: 0,
initial_UserLatitude: 0,
initial_UserLongitude: 0,
userLocationAddress: '',
destination: [],
destinationName: [],
destinationAddress: [],
destinationCoords: [],
destinationImageUri: [],
numOfInput:[0,1],
counter: 1,
wayPoints: [],
markers: [],
doCleanState: 'no' // Right here I want to pass the prop from PlaceInput as this.state.doCleanState
};
const cleanUpState = {
hasMapPermission: false,
destination: [],
destinationName: [],
destinationAddress: [],
destinationCoords: [],
destinationImageUri: [],
numOfInput:[0,1],
counter: 1,
wayPoints: [],
markers: [],
doCleanState: 'yes'
}
class MainMap extends React.Component{
constructor(props){
super(props);
this.state = initialState;
};
componentDidMount(){
console.log('Hello',this.props);
console.log('This is state', this.state);
this._requestUserLocation();
this._unsubscribe = this.props.navigation.addListener('focus', () => {
this.setState(cleanUpState);
})
};
componentWillUnmount(){
Geolocation.clearWatch(this.watch_location_id);
this._unsubscribe();
}
render(){
return(
//...
<PlaceInput
id={itemData}
defaultValue={this.state._userLocationDisplayed}
displayDefaultValue={!index}
doCleanState={this.state.doCleanState}
/>
);
}
По сути, я пытался передать опору из PlaceInput
как состояние в MainMap
. При сбросе состояний MainMap
(состояние doCleanState
также изменяется, но не сбрасывается), состояния PlaceInput
не сбрасываются
Вот PlaceInput
:
//...
class PlaceInput extends React.Component{
constructor(props){
super(props);
this.state={
predictions: [],
destinationInput: '',
}
}
componentDidUpdate(prevProps){
if(this.props.doCleanState !== prevProps.doCleanState){
this.setState({
destinationInput: '',
})
}
}
render(){
return(
<TextInput
key={this.id}
placeholder='Search your places'
onChangeText={(input) => {
this.setState({destinationInput: input});
this.getPlacesDebounced(input);
}}
value={this.props.displayDefaultValue ? this.props.defaultValue : this.state.destinationInput} // props.defaultValue is state of MainMap : 'Your location'
// destinationInput is what the users type
/>
);
}
//...
Когда я возвращаюсь к MainMap
, состояние destinationInput
все еще остается в PlaceInput
ПОЖАЛУЙСТА, ПОМОГИТЕ !!!