首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >react ---- Router路由的使用和页面跳转

react ---- Router路由的使用和页面跳转

作者头像
小蔚
发布2019-08-27 15:16:22
发布2019-08-27 15:16:22
3.4K00
代码可运行
举报
文章被收录于专栏:小蔚记录小蔚记录
运行总次数:0
代码可运行

React-Router的中文文档可以参照如下链接:

http://react-guide.github.io/react-router-cn/docs/Introduction.html

首先,我们打开已经构建完成的React项目目录,本人采用的是VScode编辑器

我们删去src目录下的所有文件,创建index.js文件,内容如下:

代码语言:javascript
代码运行次数:0
运行
复制
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';

ReactDOM.render(<App/>, document.getElementById('root'));

然后创建App.js文件,内容如下:

代码语言:javascript
代码运行次数:0
运行
复制
import React from 'react';
import { BrowserRouter as Router,Route} from 'react-router-dom';
import Home from './Home';
import Page1 from './Page1';
import Page2 from './Page2';
import Page3 from './Page3';

class App extends React.Component {
render(){
return(
<Router >
                <div>
<Route path="/" component={Home} />
<Route path="/Page1" component={Page1} />
<Route path="/Page2" component={Page2} />
<Route path="/Page3" component={Page3} />
</div>
</Router>
)
}
}
export default App;

在上方的import中,载入了 BrowserRouter as Router 和 Route,其意思就是从react-router-dom 包中导入Router和Route,BrowserRouter是Router中的一种。

然后,下面依次引入了Home、Page1、Page2、Page3这四个组件,组件的内容之后会给出。

在组件的render函数的return里面,我们可以看到一对<Router>标签包含了四个<Route>标签,每个<Route>标签中都包含了path属性和component属性,path 属性用于储存路径,就是网站主页路径后面的内容,假如网站地址是localhost:3000,那么,locahost:3000后面的字符串就是path属性的内容。(注意,Router只能有一个子组件,所以要把所有Route标签用一个div包裹起来)

然后是 component 属性,其中储存了组件名称,当我们访问特定地址时就会渲染该组件,也可以称其为这一个路由的入口组件,可以由这个组件延伸开来搭建页面。

Home组件的内容如下(Home.js):

代码语言:javascript
代码运行次数:0
运行
复制
import React from 'react';

class Home extends React.Component{
render(){
return(
<div>
<div>This is Home!</div>
</div>
);
}
}

export default Home;

用于显示div标签中的This is Home!语句。

Page1-Page3组件类似,内容为:

代码语言:javascript
代码运行次数:0
运行
复制
import React from 'react';

class Page1 extends React.Component{
render(){
return(
<div>
<div>This is Page1!</div>
</div>
);
}
}

export default Page1;

然后我们就可以来尝试一下访问这些页面,比如,我们在浏览器地址栏中输入localhost:3000/

可以看到:

当我们访问 localhost:3000/Page1 的时候就会看到

这里会产生一个疑问,为什么我们访问 /Page1 路径的时候会渲染Home组件的内容。

这是因为Home组件所在路由的 path为 “/”,而“/Page1”开头包含了 “/”,React就会默认渲染Home组件。

如果想在访问其他地址时不显示Home组件,可以在Home组件所在Route标签中加入 exact ,如下:

代码语言:javascript
代码运行次数:0
运行
复制
<div>
<Route exact path="/" component={Home} />
<Route path="/Page1" component={Page1} />

这样一来,当我们访问 localhost:3000/Page1 时就不会默认渲染Home组件。

关于Page2、Page3的访问也是一样,现在为止,我们可以通过输入地址的方式进行访问,但依然不够方便,那么我们就要设置一些访问入口,也就是传统页面中“超链接”所在地。

我们在Home组件中做如下更改:

代码语言:javascript
代码运行次数:0
运行
复制
import React from 'react';
import { Link } from 'react-router-dom';

class Home extends React.Component{
render(){
return(
<div>
<div>This is Home!</div>
<div>
<Link to="/Page1/" style={{color:'black'}}>
<div>点击跳转到Page1</div>
</Link>
<Link to="/Page2/" style={{color:'black'}}>
<div>点击跳转到Page2</div>
</Link>
<Link to="/Page3/" style={{color:'black'}}>
<div>点击跳转到Page3</div>
</Link>
</div>
</div>
);
}
}

export default Home;

首先,我们要在上方用 import 引入一个 Link组件,这个组件由react-router-dom内部定义,用于链接跳转,在render函数的return中设置3对Link标签,to后面填写Page1的地址(“/Page1/”、“/Page1”皆可),并包含跳转链接的文字。

(style是设置字体颜色样式,可加可不加,关于样式的设置以后的文章中会讲到)

现在,我们访问 localhost:3000/ 可以看到:

点击其中一个链接就可以跳转到特定的页面,比如Page1:

注意,这里的跳转并没有访问新的html文件,而是由React改变了原本html页面中的内容。

现在,我们已经成功地使用 Router、Route 和 Link 实现了React页面跳转的功能.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-03-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档