Перезагрузка или повторная визуализация активности с реагирующей навигацией - PullRequest
0 голосов
/ 26 июня 2019

Я сохраняю данные в своей активности NewCar, как показано ниже:

saveData() {
    this.retrieveData;
    this.state.DBCarName.push(this.state.CarName)
    AsyncStorage.setItem('CAR',JSON.stringify(this.state.DBCarName));            
    this.props.navigation.navigate('Home');
} 

И я извлекаю его, чтобы отобразить состояние DBCarName в тексте о моей домашней активности:

componentWillMount(){
    this.retrieveData();  
}

retrieveData = async () => {
    try {
        const car= await AsyncStorage.getItem('CAR')
        this.setState({ DBCarName: JSON.parse(car) })
    } catch (err) {
        console.log(err)
    }
} 

Но когда я нажимаю на кнопку, которая выполняет saveData, я возвращаюсь к действию Home в его последнем рендеринге, что означает, что мне нужно перезагрузить приложение, чтобы получить последние обработанные данные.

Ответы [ 3 ]

1 голос
/ 26 июня 2019

Вы можете использовать 'willFocus'

this.props.navigation.addListener('willFocus', (payload) => {
    this.retrieveData();
});

Я использовал внутри конструктора страницы.

Этот слушатель работает, когда навигация по экрану NewCar даже осуществляется с помощью кнопки возврата назад или аппаратной кнопки возврата Android

0 голосов
/ 26 июня 2019

Вам нужно либо передать параметры во время навигации:

    this.props.navigation.navigate("routeName", {params})

, затем проверьте параметры внутри componentDidUpdate параметра "routeName", проверьте this.props.navigation.state.params

или вам нужно использовать приставку.

0 голосов
/ 26 июня 2019

Вызов this.retrieveData(); метод в componentDidMount() метод:

componentDidMount() {
    this.retrieveData();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...