Попытка сброса навигации выдает ошибку - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь сбросить стек навигации каждый раз, когда достигаю определенного экрана c (в моем случае, домашней страницы).

Вот фрагмент кода:

componentDidMount(){
        const { navigation } = this.props

        this.focusListener = navigation.addListener('focus', () => {
            this._getData()
            console.log('coucou')
            navigation.dispatch(
                CommonActions.reset({
                  index: 0,
                  routes: [
                    { name: 'Home' },
                  ],
                })
            );
        });
        this._updateNavigationParams()
    }

    componentWillUnmount() {
        // Remove the event listener before removing the screen from the stack
        this.focusListener.remove();
    }

Если я удалю следующую часть, нет проблем, мой код работает правильно:

navigation.dispatch(
                    CommonActions.reset({
                      index: 0,
                      routes: [
                        { name: 'Home' },
                      ],
                    })
                );

Мне нужен слушатель, так как мне нужно обновить данные sh, когда я вернусь на HomeScreen, и Я также использовал бы его для сброса стека навигации каждый раз, когда возвращаюсь сюда.

Я получаю ошибку:

TypeError: this.focusListener.remove не является функцией. (В 'this.focusListener.remove ()' this.focusListener.remove не определено).

1 Ответ

0 голосов
/ 27 марта 2020

Хорошо, так что то, что найдено в net (используйте .RemoveListener () или .Remove () в функции ComponentWillUnmount ()), больше не работает.

Просто просмотр документации по реагирующей навигации дал мне решение ( здесь ) Мне просто нужно вызвать const, созданный с помощью слушателя. В моем случае я должен изменить ComponentWillUnmount следующим образом

componentWillUnmount() {
    // Remove the event listener before removing the screen from the stack
    this.focusListener();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...