import React, {Component, PropTypes} from "react"; import {StyleSheet, View, Text, TouchableOpacity, Navigator, AsyncStorage} from "react-native"; import Simple from "./Simple"; import AdvancedEffects from "./AdvancedEffects"; import Hearts from "./Hearts"; import Tests from "./Tests"; import Animated from "./Animated"; const screens = { Simple, AdvancedEffects, Hearts, Tests, Animated }; const homeRoute = { id: "home", title: "gl-react Showcase" }; const routes = [ { id: "Simple" }, { id: "AdvancedEffects" }, { id: "Hearts" }, { id: "Tests" }, { id: "Animated" }, ]; const styles = StyleSheet.create({ root: { backgroundColor: "#333", flex: 1, }, navBar: { backgroundColor: "#000" }, leftButtonContainer: { }, leftButtonText: { color: "#999", paddingLeft: 6, }, title: { color: "#999", fontSize: 14 }, home: { flex: 1, marginTop: 40, }, homeLink: { padding: 20, }, homeText: { fontSize: 24, color: "#ccc", fontWeight: "bold", }, }); class Home extends Component { static propTypes = { openScreen: PropTypes.func.isRequired }; render () { const { openScreen } = this.props; return {routes.map(route => openScreen(route)}> {route.id} )} ; } } export default class App extends Component { static propTypes = {}; constructor (props) { super(props); this.state = { initialRoute: homeRoute }; /* new Promise((success, failure) => AsyncStorage.getItem("route", (error, result) => { if (error) failure(error); else success(result); })) .then(result => { const route = JSON.parse(result); if (!route) throw new Error("invalid route"); return route; }) .catch(() => homeRoute) .then(initialRoute => this.setState({ initialRoute })); */ } renderScene = (route, navigator) => { if (route.id === homeRoute.id) { return navigator.push(route)} />; } const Screen = screens[route.id]; return ; }; render () { const { initialRoute } = this.state; if (!initialRoute) return ; return ( index === 0 ? null : navigator.pop()} style={styles.leftButtonContainer}> {"< BACK"} , RightButton: () => {}, Title: route => {route.title || route.id} }} /> } /> ); } }