码迷,mamicode.com
首页 > 其他好文 > 详细

React Router 4.0中文快速入门

时间:2017-10-19 16:34:54      阅读:515      评论:0      收藏:0      [点我收藏+]

标签:cat   default   cti   end   ret   row   ops   turn   col   

 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

 

React Router 4.0中文快速入门

标签:cat   default   cti   end   ret   row   ops   turn   col   

原文地址:http://www.cnblogs.com/yuri2016/p/7693204.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!