hashHistory 会通过 hash 进行对应。好处是简单易用,不用多余设定。
browserHistory 适用于伺服器端渲染,但需要设定伺服器端避免处理错误,这部份我们会在后面的章节详细说明。注意的是若是使用 Webpack 开发用伺服器需加上 –history-api-fallback
$ webpack-dev-server --inline --content-base . --history-api-fallback
createMemoryHistory 主要用于伺服器渲染,使用上会建立一个存在记忆体的 history 物件,不会修改浏览器的网址位置。
const history = createMemoryHistory(location)
- path path 是对应 URL 的规则。例如:/repos/torvalds 会对应到 /repos/:name 的位置,并将参数传入 Repos 组件中。由 this.props.params.name 取得参数。顺带一提,若为查询参数 /user?q=torvalds 则由 this.props.location.query.q 取得参数。
//常用书写方法
import React from 'react';
import ReactDOM from 'react-dom';
import { Router, Route, hashHistory, IndexRoute } from 'react-router';
import App from './components/App';
import Home from './components/Home';
import Repos from './components/Repos';
import About from './components/About';
import User from './components/User';
import Contacts from './components/Contacts';
ReactDOM.render(
<Router history={hashHistory}>
<Route path="/" component={App}>
<IndexRoute component={Home} />
<Route path="/repos/:name" component={Repos} />
<Route path="/about" component={About} />
<Route path="/user" component={User} />
<Route path="/contacts" component={Contacts} />
</Route>
</Router>,
document.getElementById('app')
);
//另一种书写方法
const routes = (
<Route path="/" component={App}>
<IndexRoute component={Home} />
<Route path="/repos/:name" component={Repos} />
<Route path="/about" component={About} />
<Route path="/user" component={User} />
<Route path="/contacts" component={Contacts} />
</Route>
);
ReactDOM.render(
<Router routes={routes} history={hashHistory} />,
document.getElementById('app')
);