Как передавать реквизиты в React-Navigation, чтобы перемещаемый компонент мог повторно визуализироваться при изменении этих реквизитов - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь перейти от компонента A к B, передавая реквизиты таким образом (как варианты):

this.props.navigation.navigate("B",{
            retrievePlayingNow:this.props.retrievePlayingNow, // props come from component C
            skipSong: this.skipsong, // this is a function

          });
    }

, поэтому, когда я вызываю функцию 'skipSong', он меняет реквизиты на компоненте C (который являетсяродительский компонент A) реквизиты на изменениях A, но на компоненте B реквизиты остаются теми же, и он не рендерится, чтобы показать новую информацию.Есть ли другой способ сделать это с помощью React-Navigation?

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Вы можете использовать DeviceEventEmitter для добавления событий прослушивателя для повторного рендеринга без использования приставки.

0 голосов
/ 22 октября 2018

Здесь state management libraries вступает в действие.

Ну, я использую redux .Здесь вы можете хранить данные в глобальном хранилище, которое может быть доступно любому из компонентов.

Итак, поместите переменную retrievePlayingNow в хранилище резервов компонента C и получите к нему доступ Bсоставная часть.Поэтому, когда C (или кто-либо другой) изменит значение этой переменной, все компоненты, использующие доступ к этой переменной (включая B), будут перерисованы.

Другое преимущество использования любого state management library заключается в том, чтовам не нужно создавать иерархию компонентов для передачи реквизита, как вы сделали C -> A -> B.Все, что вы можете сделать, это отправить переменную в хранилище из C и напрямую получить к ней доступ B

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