React(7),最新BAT大厂面试者整理的前端面试题目

  • 2. 准备

  • 3. 路由的基本使用

  • 4. 实现

    • index.js
  • App.jsx

  • 5. 路由组件与一般组件的区别

  • 6. NavLink与封装NavLink

  • 7. Switch的使用

  • 8. 解决多级路径刷新页面样式丢失的问题

  • 9. 路由的严格匹配与模糊匹配

  • 10. Redirect的使用 【重定向】

  • 四、嵌套路由使用

    • 1. 最终效果
  • 2. 注意

  • 3. 实现

    • Home/index.jsx
  • 五、向路由组件传递参数数据

    • 1. 效果
  • 2. 具体方法

    • 方法1. params参数
    • Message/index.jsx
  • Detail/index.jsx

  • 方法2. search参数

  • 方法3. state参数

    • Message/index.jsx
  • Detail/index.jsx

  • 六、多种路由跳转方式

    • 1. 编程式路由导航
  • 2. withRouter的使用

  • 七、注意

    • BrowserRouter与HashRouter的区别

一、理解

=======================================================================

1. SPA的理解


  1. 单页Web应用(single page web application,SPA

  2. 就是只有一张Web页面的应用,是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用程序。

  3. 点击页面中的链接不会刷新页面,只会做页面的局部更新。

  4. 数据都需要通过ajax请求获取, 并在前端异步展现。

2. 路由的理解


2.1 什么是路由?

  1. 一个路由就是一个映射关系(key: value)

  2. key路径, value可能是functioncomponent

2.2 路由的分类

1. 前端路由
  1. 理解:浏览器端路由,value是component,用于展示页面内容。

  2. 注册路由: < Route path=“/test” component={Test} >

  3. 工作过程:当浏览器的path变为/test时, 当前路由组件就会变为Test组件

2. 后端路由
  1. 理解:value是function, 用来处理客户端提交的请求。

  2. 注册路由:router.get(path, function(req, res))

  3. 工作过程:当node接收到一个请求时, 根据请求路径找到匹配的路由, 调用路由中的函数来处理请求, 返回响应数据

3. react-router-dom 的理解


  1. React的一个插件库。

  2. 专门用来实现一个SPA应用。

  3. 基于React的项目基本都会用到此库。

二、react-router-dom相关API

==========================================================================================

1. 内置组件


  1. <BrowserRouter/ >

  2. <HashRouter/ >

  3. <Route/ >

  4. <Redirect/ >

  5. <Link/ >

  6. <NavLink/ >

  7. <Switch/ >

2. 其它


  1. history对象

  2. match对象

  3. withRouter函数

三、路由的使用

==========================================================================

1. 效果


在这里插入图片描述

2. 准备


  1. 下载react-router-dom:

npm install react-router-dom

  1. 引入bootstrap.css:

3. 路由的基本使用


  1. 明确好界面中的导航区、展示区

  2. 导航区的a标签改为Link标签

< Link to="/xxxxx">Demo< /Link >

  1. 展示区写Route标签进行路径的匹配

< Route path='/xxxx' component={Demo}/ >

  1. < App/>的最外侧包裹了一个< BrowserRouter>< HashRouter >

4. 实现


index.js

这里用一个标签将整个App包起来,保证使用的是同一个路由器

//引入react核心库

import React from ‘react’

//引入ReactDOM

import ReactDOM from ‘react-dom’

//

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

//引入App

import App from ‘./App’

ReactDOM.render(

,

document.getElementById(‘root’)

)

App.jsx

import React, { Component } from ‘react’

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

import Home from ‘./Home’

import About from ‘./About’

export default class App extends Component {

render() {

return (

React Router Demo

{/* 原生html中,靠跳转不同的页面 */}

{/* About

Home */}

{/* 在React中靠路由链接实现切换组件–编写路由链接 */}

About Home

{/* 注册路由 */}

)

}

}

5. 路由组件与一般组件的区别


  1. 写法不同

一般组件:<Demo/>

路由组件:<Route path="/demo" component={Demo}/>

  1. 存放位置不同

一般组件:components

路由组件:pages

  1. 接收到的props不同

一般组件:写组件标签时传递了什么,就能收到什么

路由组件:接收到三个固定的属性

history:

go: ƒ go(n)

goBack: ƒ goBack()

goForward: ƒ goForward()

push: ƒ push(path, state)

replace: ƒ replace(path, state)

location:

pathname: “/about”

search: “”

state: undefined

match:

params: {}

path: “/about”

url: “/about”

6. NavLink与封装NavLink


NavLink可以实现路由链接的高亮,通过activeClassName属性指定样式名,默认是"active"

Home

可以自己封装一个NavLink【一般组件】

import React, { Component } from ‘react’

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

export default class MyNavLink extends Component {

render() {

// console.log(this.props);

return (

<NavLik activeClassName=“demo” className=“list-group-item” {…this.props} />

)

}

}

标签体内容是特殊的标签属性通过this.props.children可以获取标签体内容

使用

About

Home

7. Switch的使用


  1. 通常情况下,path和component是一一对应的关系。

  2. Switch可以提高路由匹配效率(单一匹配)。

这样只要匹配到了第一个就不会再往下匹配了

8. 解决多级路径刷新页面样式丢失的问题


  1. public/index.html 中 引入样式时不写.// (常用)【绝对路径】

  2. public/index.html 中 引入样式时不写./%PUBLIC_URL% (常用)

  3. 使用HashRouter

9. 路由的严格匹配与模糊匹配


  1. 默认使用的是模糊匹配(简单记:【输入的路径】必须包含要【匹配的路径】,且顺序要一致)

  2. 开启严格匹配:<Route exact={true} path="/about" component={About}/>

  3. 严格匹配不要随便开启,需要再开,有些时候开启会导致无法继续匹配二级路由

10. Redirect的使用 【重定向】


一般写在所有路由注册的最下方,当所有路由都无法匹配时,跳转到Redirect指定的路由

具体编码:

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

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

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

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

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

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

最后

今天的文章可谓是积蓄了我这几年来的应聘和面试经历总结出来的经验,干货满满呀!如果你能够一直坚持看到这儿,那么首先我还是十分佩服你的毅力的。不过光是看完而不去付出行动,或者直接进入你的收藏夹里吃灰,那么我写这篇文章就没多大意义了。所以看完之后,还是多多行动起来吧!

可以非常负责地说,如果你能够坚持把我上面列举的内容都一个不拉地看完并且全部消化为自己的知识的话,那么你就至少已经达到了中级开发工程师以上的水平,进入大厂技术这块是基本没有什么问题的了。

片转存中…(img-Fsb4c3l0-1711716861720)]
[外链图片转存中…(img-yaYAx2eu-1711716861721)]
[外链图片转存中…(img-wSLl3Ave-1711716861721)]
[外链图片转存中…(img-7PWXYdyG-1711716861722)]

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

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

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-x7laCE1P-1711716861722)]

最后

今天的文章可谓是积蓄了我这几年来的应聘和面试经历总结出来的经验,干货满满呀!如果你能够一直坚持看到这儿,那么首先我还是十分佩服你的毅力的。不过光是看完而不去付出行动,或者直接进入你的收藏夹里吃灰,那么我写这篇文章就没多大意义了。所以看完之后,还是多多行动起来吧!

可以非常负责地说,如果你能够坚持把我上面列举的内容都一个不拉地看完并且全部消化为自己的知识的话,那么你就至少已经达到了中级开发工程师以上的水平,进入大厂技术这块是基本没有什么问题的了。

CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值