The Navigator Component
import {Map} from 'immutable';
import {NavigationExperimental, View, StatusBar} from 'react-native';
import React, {Component, PropTypes} from 'react';
import {connect} from 'react-redux';
import Pokedex from '../Pokedex';
import PokemonDetails from '../PokemonDetails';
import {ROUTE_IDS} from '../../constants';
import * as helpers from './navigator-helpers';
const {
AnimatedView: NavigationAnimatedView,
Card: NavigationCard,
Header: NavigationHeader,
} = NavigationExperimental;The Navigator Container Class
class Navigator extends Component {
componentWillMount() {
this.props.catchEmAll();
}
_getActiveScene = (navigationState) => {
switch(navigationState.key) {
case ROUTE_IDS.POKEMON_DETAIL:
return <PokemonDetails url={navigationState.url} />;
default:
return <Pokedex />;
}
}
_renderCard = (props) => (
<NavigationCard
{...props}
key={props.scene.navigationState.key}
renderScene={this._renderScene} />
)
_renderScene = ({ scene: { navigationState } }) => {
const activeScene = this._getActiveScene(navigationState);
return (
<View style={{ flex: 1, marginTop: NavigationHeader.HEIGHT }}>
<StatusBar barStyle="default" />
{ activeScene }
</View>
);
}
render() {
const { navigationState, onNavigate } = this.props;
return (
<NavigationAnimatedView
navigationState={navigationState}
style={{ flex: 1 }}
onNavigate={onNavigate}
renderOverlay={helpers.renderHeader}
applyAnimation={helpers.applyAnimation}
renderScene={this._renderCard}
/>
);
}
}Hook Our Navigator Up
Last updated
Was this helpful?