Передача параметров в React Navigation 5 - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь передать несколько параметров между Tab Navigator. Ниже приведена структура моей программы. В полужирном указаны маршруты

App (навигатор по вкладкам): { Main (стек) & Filter (экран )}

Основной (Навигатор стеков): { Домашняя страница (экран) & MediaDetails (экран)}

I иметь на экране кнопку , связанную с Filter , которая имеет функцию onPress () . Я передаю несколько параметров (но давайте рассмотрим только параметр от до ради этого вопроса).

this.props.navigation.navigate('Home', {
    to: this.state.to,
}

Теперь на экране, связанном с Home , я читаю параметр внутри состояния, например:

state = {
    to: this.props.route.params.to
}

Внутри Приложение. js, I ' установите начальное значение от до равным '2020' следующим образом:

<Stack.Screen 
    name="Home" 
    component={HomeScreen}                 
    initialParams={{
       to: '2020'
    }}
/>

Начальное значение действительно установлено на 2020, Я нажимаю на кнопку. Допустим, я устанавливаю на на 1900 . Непосредственно перед выполнением this.props.navigation.navigate , я console.log (this.state.to) значение и оно действительно обновляется до 1900 . Однако, когда экран меняется на Home , значение возвращается к 2020 (наблюдается через console.log)

Может кто-то указать причину этого пугающего поведения ? Я пытался отладить это в течение многих часов без удачи. React Navigation 5 также довольно нова, поэтому ничего подобного в Интернете найти не удалось. Любая помощь будет оценена. Спасибо за прочтение.

Редактировать: Проблема устранена, полный код удален!

1 Ответ

1 голос
/ 19 февраля 2020

Я решил эту проблему, обновив состояние в shouldComponentUpdate () .

Эта ошибка была вызвана тем, что состояние не обновлялось, поскольку экран оставался смонтированным.

Это стало возможным из-за ravirajn22 на GitHub, который объяснил мне причину этой ошибки и возможное решение.

Ссылка на ответ: https://github.com/react-navigation/react-navigation/issues/6863

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...