If this is your first time building a React Native app, we recommend you check out the official "Getting Started" guide.
React Router Native is published to npm. You can install it with either npm
or yarn
.
npm install react-router-native
# or
yarn add react-router-native
Once you've initialized a new React Native project, you can copy/paste any of the examples into your index.ios.js
or index.android.js
files to play around with them.
Here's the basic example:
import React from "react";
import { StyleSheet, Text, View, AppRegistry } from "react-native";
import { NativeRouter, Route, Link } from "react-router-native";
const Home = () => <Text style={styles.header}>Home</Text>;
const About = () => <Text style={styles.header}>About</Text>;
const Topic = ({ match }) => (
<Text style={styles.topic}>{match.params.topicId}</Text>
);
const Topics = ({ match }) => (
<View>
<Text style={styles.header}>Topics</Text>
<View>
<Link
to={`${match.url}/rendering`}
style={styles.subNavItem}
underlayColor="#f0f4f7"
>
<Text>Rendering with React</Text>
</Link>
<Link
to={`${match.url}/components`}
style={styles.subNavItem}
underlayColor="#f0f4f7"
>
<Text>Components</Text>
</Link>
<Link
to={`${match.url}/props-v-state`}
style={styles.subNavItem}
underlayColor="#f0f4f7"
>
<Text>Props v. State</Text>
</Link>
</View>
<Route path={`${match.path}/:topicId`} component={Topic} />
<Route
exact
path={match.path}
render={() => (
<Text style={styles.topic}>Please select a topic.</Text>
)}
/>
</View>
);
const App = () => (
<NativeRouter>
<View style={styles.container}>
<View style={styles.nav}>
<Link to="/" underlayColor="#f0f4f7" style={styles.navItem}>
<Text>Home</Text>
</Link>
<Link
to="/about"
underlayColor="#f0f4f7"
style={styles.navItem}
>
<Text>About</Text>
</Link>
<Link
to="/topics"
underlayColor="#f0f4f7"
style={styles.navItem}
>
<Text>Topics</Text>
</Link>
</View>
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
<Route path="/topics" component={Topics} />
</View>
</NativeRouter>
);
const styles = StyleSheet.create({
container: {
marginTop: 25,
padding: 10
},
header: {
fontSize: 20
},
nav: {
flexDirection: "row",
justifyContent: "space-around"
},
navItem: {
flex: 1,
alignItems: "center",
padding: 10
},
subNavItem: {
padding: 5
},
topic: {
textAlign: "center",
fontSize: 15
}
});
AppRegistry.registerComponent("MyApp", () => App);