/**
* Sample React Native App
* https://github.com/facebook/react-native
* @flow
*/
import React, {Component, Children, createElement, PropTypes} from 'react';
import {
StyleSheet,
Text,
View,
Navigator
} from 'react-native';
class NavigatorProvider extends Component {
getChildContext() {
return {
navigator: this.props.navigator
}
}
render() {
return Children.only(this.props.children)
}
}
NavigatorProvider.childContextTypes = {navigator: PropTypes.any}
const withNavigator = (mapNavigator) => (BaseComponent) => {
class WithNavigator extends Component {
render() {
const actions = mapNavigator(this.context.navigator);
return createElement(BaseComponent, {...this.props, ...actions})
}
}
WithNavigator.contextTypes = {navigator: PropTypes.any}
return WithNavigator
}
function Main({pushContent}) {
return (
Main View
Push
)
}
const MainWithNav = withNavigator(n=> ({
pushContent: ()=>n.push({name: 'Content'})
}))(Main)
function Content({back}) {
return (
Content View
Back
);
}
const ContentWithNav = withNavigator(n=>({
back: n.pop
}))(Content)
export default class NavigatorApp extends Component {
render() {
return (
this.renderScene(r, n)}
/>
);
}
renderScene(route, navigator) {
return (
{this.elementForScene(route)}
)
}
elementForScene(route) {
if (route.name === 'Main') {
return
}
if (route.name === 'Content') {
return
}
}
}
const styles = StyleSheet.create({
fullCenter: {
flex: 1,
justifyContent: 'center',
},
textCenter: {
textAlign: 'center'
}
})