React入门实战(二)页面跳转,前端面试题2024笔试

这是Home页面

)

}

}

export default Home

About.js组件、Contact.js组件和Home组件一样,都只是显示一句话:这是About /Contact页面,就不列举了

Navbar.js,导航栏,在右侧设置三个组件的链接:Home、About、Contact

import React from ‘react’

const Navbar = () => {

return (

React入门实战(二)

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

      }

      export default Navbar

      SinglePost组件先不写

      先来看看效果:

      在这里插入图片描述


      路由设置:


      添加路由,实现点击Home、About、Contact三个页面切换的效果

      App.js:

      // 引入路由库

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

      // 引入子组件

      import Home from ‘./Home’;

      import About from ‘./About’;

      import Contact from ‘./Contact’;

      // 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}

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

        深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
        因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

        img
        img
        img
        img

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

        如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
        img

        8年进入阿里一直到现在。**

        深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
        因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

        [外链图片转存中…(img-TDVRmnik-1710889468533)]
        [外链图片转存中…(img-6iC1BVuW-1710889468534)]
        [外链图片转存中…(img-2qJFzDtK-1710889468534)]
        [外链图片转存中…(img-NfIqEGAi-1710889468535)]

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

        如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
        [外链图片转存中…(img-Wb79UtV2-1710889468535)]

      • 19
        点赞
      • 9
        收藏
        觉得还不错? 一键收藏
      • 0
        评论
      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

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

      抵扣说明:

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

      余额充值