ReactNavigation - вызвать родительский навигатор и изменить его атрибуты "cardStyle" и "navigationOption" - PullRequest
0 голосов
/ 18 мая 2018

У меня есть следующий код:

/**
 * The tab that's is going to stay in the Home Section
 * @type {[type]}
 */
const HomeTab = createMaterialTopTabNavigator({
  //Home: Home,
  PostFriends: PostFriends,
  // Another screens
}, {
  tabBarComponent: null,
  mode: 'hide',
  navigationOptions: {
    visible: false // Now I don't want to see this tab, but I'll need it in the future
  }
});

/**
 * The Stack that 
 * @type {[type]}
 */
const HomeStack = createStackNavigator({
  HomeTab: HomeTab,
  // Another screens
}, {
  headerMode: 'float',
  cardStyle: {
    top: -20 // This is the value that I want to change it to make the animation
  }
});

В резюме, как вы можете видеть, у меня есть скрытый TabNavigator, который находится внутри StackNavigator, и я хочу анимировать заголовок этого последнего какзаголовки наиболее распространенных приложений, которые, когда экран прокручивается вниз, затем заголовок идет вверх, пока не исчезнет.

Теперь я нахожусь внутри экрана PostFriend, на котором есть ScrollView с большим количеством данных, поэтому я хочудоступ к HomeStack, когда я прокручиваю на этом экране, чтобы изменить атрибуты "cardStyle" и "navigationOption", чтобы изменить его значения и сделать анимацию.

Это код моего экрана:

export default class PostFriends extends React.Component {
    static navigationOptions = ({ navigation }) => {
        const { params } = navigation.state;
       // I tried a lot of black magic to 
       // connect with the HomeStack
    }; 
    /**
     * Constructor of the component
     * @param  {[type]} props [description]
     * @return {[type]}       [description]
     */
    constructor(props) {
        super(props);
        // Some attributes
    }

    render() {
        return (
              <ScrollView>
                  // A lot of data
              </ScrollView>
        );
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...