Как определить экран, с которого осуществляется навигация.DrawerNavigation или StackNavigation в реагировать родной - PullRequest
0 голосов
/ 01 декабря 2018

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

Есть ли способ определить, какая навигация использовалась для навигации в transitionConfig Это фрагмент кода, который я пытаюсь изменить, но который не решает

navigationOptions: {
  transitionConfig: (toTransitionProps, fromTransitionProps) => {
    const isBack = fromTransitionProps.navigation.state.index >= toTransitionProps.navigation.state.index;
    const routeName = isBack ? fromTransitionProps.scene.route.routeName : toTransitionProps.scene.route.routeName;

    // This check is only for the case where the transitionConfig is specified globally per navigator basis
    // If the config is specified per screen basis, then `routeName` will always refer to the current screen
    if (routeName === 'Search') {
      return {
        transitionSpec: { duration: isBack ? 150 : 200 },
        screenInterpolator: CardStackStyleInterpolator.forFade(props),
      }
    }
  },
}

По ссылке Github Issue

1 Ответ

0 голосов
/ 01 декабря 2018

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

toTransitionProps.navigation.getParam('invokedBy',/*default value*/)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...