92 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			92 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: React Router Cheatsheet
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								Based on <a href='http://ricostacruz.com/cheatsheets/react-router.html' target='_blank' rel='nofollow'>http://ricostacruz.com/cheatsheets/react-router.html</a> but updated for v2.0.0 of React Router.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Basic
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    import { render } from 'react-dom'
							 | 
						||
| 
								 | 
							
								    import { Router, Route, browserHistory } from 'react-router'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Import RootView and NoMatch
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    render((
							 | 
						||
| 
								 | 
							
								      <Router history={browserHistory}>
							 | 
						||
| 
								 | 
							
								        <Route path="/" component={RootView} />
							 | 
						||
| 
								 | 
							
								        <Route path="*" component={PageNotFound} />
							 | 
						||
| 
								 | 
							
								      </Router>
							 | 
						||
| 
								 | 
							
								    ), document.getElementById('app'))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Nesting
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    import React from 'react'
							 | 
						||
| 
								 | 
							
								    import { render } from 'react-dom'
							 | 
						||
| 
								 | 
							
								    import { Router, Route, browserHistory } from 'react-router'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // Import About, Inbox and Messages
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    class Chrome extends React {
							 | 
						||
| 
								 | 
							
								      render () {
							 | 
						||
| 
								 | 
							
								        return (
							 | 
						||
| 
								 | 
							
								          <div>
							 | 
						||
| 
								 | 
							
								            <h1>App</h1>
							 | 
						||
| 
								 | 
							
								            <a href="/about">About</a>
							 | 
						||
| 
								 | 
							
								            <a href="/inbox">Inbox</a>
							 | 
						||
| 
								 | 
							
								            <a href="/messages">Messages</a>
							 | 
						||
| 
								 | 
							
								            { this.props.children }
							 | 
						||
| 
								 | 
							
								          </div>
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    render((
							 | 
						||
| 
								 | 
							
								      <Router history={browserHistory}>
							 | 
						||
| 
								 | 
							
								        <Route path="/" component={Chrome}>
							 | 
						||
| 
								 | 
							
								          <Route path="about" component={About} />
							 | 
						||
| 
								 | 
							
								          <Route path="inbox" component={Inbox} />
							 | 
						||
| 
								 | 
							
								          <Route path="messages" component={Messages} />
							 | 
						||
| 
								 | 
							
								        </Route>
							 | 
						||
| 
								 | 
							
								      </Router>
							 | 
						||
| 
								 | 
							
								    ), document.getElementById('app'))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## URL params
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    class Message extends React {
							 | 
						||
| 
								 | 
							
								      componentDidMount() {
							 | 
						||
| 
								 | 
							
								        // from the path `/inbox/messages/:id`
							 | 
						||
| 
								 | 
							
								        const id = this.props.params.id
							 | 
						||
| 
								 | 
							
								        ...
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Link
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    import { Link } from 'react-router'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /* Nav Component */
							 | 
						||
| 
								 | 
							
								      ...
							 | 
						||
| 
								 | 
							
								      render() {
							 | 
						||
| 
								 | 
							
								        ...
							 | 
						||
| 
								 | 
							
								        const userId = 10;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return (
							 | 
						||
| 
								 | 
							
								          // Adding params is as simple as appending them to the route
							 | 
						||
| 
								 | 
							
								          <Link to={`user/${userId}`}>User 10</Link>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								          // Classes can be added to the link element if the current route is the one they link to
							 | 
						||
| 
								 | 
							
								          <Link to="login"
							 | 
						||
| 
								 | 
							
								            activeClassName="-active">Login</Link>
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Other config
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    <Route path="/">
							 | 
						||
| 
								 | 
							
								      <IndexRoute component={Home} />
							 | 
						||
| 
								 | 
							
								      <Route path="*" handler={NotFound} />
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      // arbitrary/url/login -> /arbitrary/url/sessions/new
							 | 
						||
| 
								 | 
							
								      <Redirect from="login" to="sessions/new" />
							 | 
						||
| 
								 | 
							
								      // arbitrary/url/about/1 -> /arbitrary/url/profile/1
							 | 
						||
| 
								 | 
							
								      <Redirect from="about/:id" to="profile/:id" />
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      <Route name="about-user" ... />
							 | 
						||
| 
								 | 
							
								      ...
							 |