// Import the Navigator from React Native import React, { Component } from 'react'; import { AppRegistry, Navigator } from 'react-native'; import MainScene from './app/scenes/mainScene' import AddGoalScene from './app/scenes/addGoalScene' export default class Goalie extends Component { renderScene(route, navigator) { // Specify the properties to pass to the scene you will // render. It is useful to pass the navigator around the // scenes so that you can push and pop to the navigation // stack. var globalNavigatorProps = { navigator: navigator, goal: route.goal }; // Based on the route passed to the navigator you can // determine which scene to render. switch(route.ident) { case "MainScene": return ( <MainScene {...globalNavigatorProps} />); case "AddGoalScene": return ( <AddGoalScene {...globalNavigatorProps} />); default: return ( <MainScene {...globalNavigatorProps} />); } } render() { return ( // Render your navigator // You must specify an initial route, which will become // your root view for the app. The initialRoute is just // an object with an identifier you can use to define // which screen should be displayed, and whatever other // info you would like to pass in. // You must also specify a renderScene function which // has the args route and navigator, this must return // what you would like to render on the navigation stack. <Navigator initialRoute={{ident: "MainScene", goal: "MainScene" }} renderScene={this.renderScene} /> ); } } AppRegistry.registerComponent('Goalie', () => Goalie);
The next step is to be able to add and remove from the navigation stack. For simplicity, I will demonstrate this using back and forward buttons:
import React, { Component } from 'react';
import {
Button
} from 'react-native';
import ViewContainer from
'../components/viewContainer/ViewContainer'
export default class MainScene extends Component {
// Passes new route to the navigator, the scene
// with the corresponding identifier will get rendered.
navigateToAddGoal() {
this.props.navigator.push({
ident: "AddGoalScene",
goal: this.props.goal
});
}
// Removes the current scene from the navigator's
// stack, and goes back to the previous scene.
goBack() {
this.props.navigator.pop();
}
render() {
return (
<ViewContainer>
<Button title= "Back"
onPress = { (event) => this.goBack() }/>
<Button title= "Forward"
onPress = { (event) => this.navigateToAddGoal() }/>
</ViewContainer>
);
}
}
No comments:
Post a Comment