1 import React from 'react' 2 import { 3 BrowserRouter as Router, 4 Route, 5 Link 6 } from 'react-router-dom' 7 8 const Home = () => ( 9 <div> 10 <h2>Home</h2> 11 </div> 12 ) 13 14 const About = (props) => { 15 let goto=function(){ 16 console.log(props); 17 let { history } = props; 18 history.push('/topics'); //编程式跳转,注意使用prop来读取history 19 } 20 return ( 21 <div> 22 <h2><button onClick={goto}>about</button></h2> 23 </div> 24 ) 25 26 } 27 28 const Topic = ({ match }) => ( 29 <div> 30 <h3>{match.params.topicId}</h3> 31 </div> 32 ) 33 34 const Topics = ({ match }) => ( 35 <div> 36 <h2>Topics</h2> 37 <ul> 38 <li> 39 <Link to={`${match.url}/rendering`}> 40 Rendering with React: 41 </Link> 42 </li> 43 <li> 44 <Link to={`${match.url}/components`}> 45 Components 46 </Link> 47 </li> 48 <li> 49 <Link to={`${match.url}/props-v-state`}> 50 Props v. State 51 </Link> 52 </li> 53 </ul> 54 55 <Route path={`${match.url}/:topicId`} component={Topic}/> 56 <Route exact path={match.url} render={() => ( 57 <h3>Please select a topic.</h3> 58 )}/> 59 </div> 60 ) 61 62 const BasicExample = ({ match }) => ( 63 <Router> //跳由容器 64 <div> 65 <ul> 66 <li><Link to="/">Home</Link></li> 67 <li><Link to="/about">About</Link></li> 68 <li><Link to="/topics">Topics</Link></li> 69 70 <li><Link to="/query/user?id=123&name=minooo">query1</Link></li> 71 <li><Link to={{pathname: '/query/user', search: '?id=456&name=minooo'}}>query2</Link></li> 72 </ul> 73 74 75 76 <hr/> 77 78 <Route exact path="/" component={Home}/> //表示点击Link里的to就自动把组件渲染 <Route>位置这里 exact表示精确匹配 79 <Route path="/about" component={About}/> 80 <Route path="/topics" component={Topics}/> 81 82 <Route path='/query/user' render={({match, location}) => ( //render他component一样的用法,不过render不用再次渲染,比较高效 83 <div> 84 <p><About></About></p> 85 <p>query</p> 86 <p>match:{JSON.stringify(match)}</p> 87 <p>location:{JSON.stringify(location)}</p> 88 <p>id:{new URLSearchParams(location.search).get('id')}</p> 89 <p>name:{new URLSearchParams(location.search).get('name')}</p> 90 </div> 91 )} /> 92 93 </div> 94 </Router> 95 ) 96 export default BasicExample