Реагирование параметров передачи навигации на вложенный stackNavigator - PullRequest
0 голосов
/ 26 ноября 2018

В реагирующей навигации 3.0 они добавили функцию для передачи параметров по умолчанию на экран.Проблема в том, что я хочу передать эти параметры вложенному stackNavigator, но не могу понять, как это сделать.Это мои навигаторы: MainDrawer.js:

const MyDrawerNavigator = createDrawerNavigator({
  Anime: {
    screen: SerieNavigation,
    params: { type: "anime" },
    path: "anime/:anime"
  },
  Tv: {
    screen: SerieNavigation,
    params: { type: "tv-show" },
    path: "tv/:tv"
  },
  Film: {
    screen: SerieNavigation,
    params: { type: "film" },
    path: "film/:film"
  }
});

const AppContainer = createAppContainer(MyDrawerNavigator);

export default AppContainer;

SerieNavigation.js:

const SerieStack = createStackNavigator(
  {
    Content: {
      screen: SearchScreen,
      params: { type: "anime" } //<-- HERE I WOULD LIKE TO DO SO params: { type: props.navigation.state.params.type }
    },
    Serie: SearieScreen,
    Episode: EpisodePage
  },
  {
    headerMode: "none",
    navigationOptions: {
      headerVisible: false
    }
  }
);

SerieStack.defaultNavigationOptions = {};
export default SerieStack;

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Для доступа к реквизитам родителя вы можете использовать this.props.navigation.dangerouslyGetParent().getParam('type');, теперь вы можете получить доступ к любому реквизиту родителя.

0 голосов
/ 26 ноября 2018

Я полагаю, что вы могли бы достичь этого, передав свои screenProps вашему стеку Navigator.Вот так (при условии, что вы вернете свой стековый навигатор куда-нибудь):

render() {
  <MyDrawerNavigator screenProps={this.props} />
}

Затем вы можете получить к нему доступ внутри вашего SerieStack следующим образом:

const SerieStack = createStackNavigator(
{
  Content: {
    screen: SearchScreen,
    params: { type: this.props.screenProps.navigation.state.params.type }
  }
});
...