React入门实战(二)页面跳转(附完整代码)

// Route标签设置跳转路径

class App extends Component {

render() {

return (

);

}

}

export default App;

点击“About页面”即可切换到About页面,但每次点击都会再刷新一次页面,如果只是想跳转,不需要重新加载渲染,可以使用Link标签,减少DOM性能消耗(Link标签会被渲染成a标签,但节省了很多性能,还有一个Navlink标签,当链接被选中时,增加一个native的className)

用Link标签对导航栏中的三个跳转路径做修改(需引入react-router-dom库)

    • Home页面
    • About页面
    • Contact页面
    • 效果:可以看到,切换页面时左上角那个刷新图标没有转动,即没有重新加载

      在这里插入图片描述


      axios请求数据与钩子函数componentDidMount()使用


      • 在Home页面装载完毕时,通过axios向JsonPlaceHolder发起数据请求;

      • 数据请求的过程在钩子函数componentDidMount()中进行;

      • 当axios请求得到回应,记为res,其中的data字段就是我们需要的数据,由于数据较多,只存储前20条记录;

      • 将得到的数据记录到state中(方便在render函数中取用);

      • 如果得到posts数据,就用JSX语法处理后渲染展示;否则提示正在加载中。

      import React, { Component } from ‘react’

      import axios from ‘axios’

      class Home extends Component {

      state = {

      posts: null

      }

      componentDidMount() {

      // 向第三方库请求数据并保存到state中

      axios.get(“http://jsonplaceholder.typicode.com/posts”).then(res => {

      this.setState({

      posts: res.data.splice(0, 20)

      })

      })

      }

      render() {

      // 处理获得的数据

      const { posts } = this.state;

      // 如果得到posts数据,就用JSX语法处理后渲染展示;否则提示正在加载中

      const postsList = posts ? (

      posts.map(post => {

      return (

      {post.title}

      {post.body}

      )

      })

      ) : (

      加载信息中,请稍候......

      )

      return (

      < div className=‘container’ >

      这是Home页面

      {postsList}

      )

      }

      }

      export default Home;

      效果:展示出posts信息

      在这里插入图片描述


      单条post详情页:路由参数


      • 设置详情页的路由表

      • 点击某条post,就跳转到这条记录的详情页——Link标签与路由参数的使用

      • 详情页组件接收到路由参数,向第三方库请求数据,得到数据后展示

      • 为防止一个路由参数匹配到多条路径,使用Switch标签——只匹配单条路由

      App.js 设置详情页路由,设置Switch匹配单条路径

      {/详情页路由/}

      新建SinglePost.js,作为详情页组件

      import React, { Component } from ‘react’

      import axios from ‘axios’

      class SinglePost extends Component {

      state = {

      post: []

      }

      componentDidMount() {

      // 请求单页数据并存储到state

      const post_id = this.props.match.params.post_id

      axios.get(“http://jsonplaceholder.typicode.com/posts/” + post_id).then(res => {

      this.setState({

      post: res.data

      })

      })

      }

      render() {

      // 从state中取出数据并加工

      const { post } = this.state;

      const postShow = post ? (

      {post.title}

      {post.body}

      ) : (

      还在加载中......

      )

      return (

      {postShow}

      )

      }

      }

      export default SinglePost;

      在Home.js中,将post的title部分包裹上Link标签,让用户可以点击跳转

      {post.title}

      最后再加上图片背景,在index.css中加样式

      最终效果如下:

      在这里插入图片描述


      完整代码


      App.js:

      import React, { Component } from ‘react’

      import Navbar from ‘./Navbar’;

      import { Route, BrowserRouter, Switch } from ‘react-router-dom’

      import Home from ‘./Home’;

      import About from ‘./About’;

      import Contact from ‘./Contact’;

      import SinglePost from ‘./SinglePost’;

      class App extends Component {

      render() {

      return (

      );

      }

      }

      export default App;

      Home.js

      import React, { Component } from ‘react’

      import axios from ‘axios’

      import { Link } from ‘react-router-dom’

      import MyImg from ‘./1.jpg’

      class Home extends Component {

      state = {

      posts: null

      }

      componentDidMount() {

      // 向第三方库请求数据并保存到state中

      axios.get(“http://jsonplaceholder.typicode.com/posts”).then(res => {

      this.setState({

      posts: res.data.splice(0, 20)

      })

      })

      }

      render() {

      // 解构

      const { posts } = this.state;

      const postsList = posts ? (

      posts.map(post => {

      return (

      {post.title}

      {post.body}

      )

      })

      ) : (

      加载信息中,请稍候......

      )

      return (

      < div className=‘container home’ >

      这是Home页面

      {postsList}

      )

      }

      }

      export default Home;

      Navbar.js:

      import React from ‘react’

      import {Link} from ‘react-router-dom’

      const Navbar = () => {

      return (

      <a href='/'className=‘brand-logo’>React入门实战(二)

      • Home页面
      • About页面
      • Contact页面
      • )

        }

        export default Navbar;

        About.js:

        import React from ‘react’

        const About = ()=>{

        return (

        自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

        深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

        因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

        img

        既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

        由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

        如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

        最后

        分享一套阿里大牛整理的前端资料给大家,点击前端校招面试题精编解析大全即可免费下载

        ❤️ 谢谢支持,喜欢的话别忘了 关注、点赞哦。

        ,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

        因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

        [外链图片转存中…(img-c6oZQrY0-1713553093628)]

        [外链图片转存中…(img-c8vKURZ9-1713553093629)]

        既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

        [外链图片转存中…(img-zg2H2T5h-1713553093629)]

        由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

        如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

        [外链图片转存中…(img-FmqUH0mm-1713553093629)]

        最后

        分享一套阿里大牛整理的前端资料给大家,点击前端校招面试题精编解析大全即可免费下载

        ❤️ 谢谢支持,喜欢的话别忘了 关注、点赞哦。

        前端校招面试题精编解析大全

      • 24
        点赞
      • 18
        收藏
        觉得还不错? 一键收藏
      • 0
        评论
      React中,可以使用react-router-dom来实现页面跳转。有几种常见的方式可以实现页面跳转。 第一种方式是使用react-router-dom中的Link组件。这种方式适用于点击按钮或其他组件进行页面跳转。具体使用方式如下: ```jsx import { Link } from 'react-router-dom'; // 在需要触发跳转的组件中 <Link to="/path/newpath">点击跳转</Link> ``` 第种方式是使用react-router-redux中的push方法进行页面跳转。这种方式适用于在Redux中进行页面跳转。具体使用方式如下: ```jsx import { push } from 'react-router-redux'; // 在需要触发跳转的组件中,通过dispatch调用push方法 dispatch(push('/path/newpath')); ``` 第三种方式是通过配置路由来实现页面跳转。可以使用React Router来配置路由。具体代码如下: ```jsx import { BrowserRouter as Router, Switch, Route, Link } from 'react-router-dom'; // 配置路由 <Router> <Switch> <Route exact path="/" component={Home} /> <Route path="/about" component={About} /> <Route path="/contact" component={Contact} /> </Switch> </Router> // 在需要触发跳转的组件中 <Link to="/about">点击跳转</Link> ``` 需要注意的是,在使用React Router进行页面跳转之前,需要先安装相关的依赖包。可以使用npm命令来安装依赖: ```bash npm install react react-dom react-scripts react-router-dom@5 --save ```<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

      “相关推荐”对你有帮助么?

      • 非常没帮助
      • 没帮助
      • 一般
      • 有帮助
      • 非常有帮助
      提交
      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值