前端学习知识点总结

1.前端在应用bootstrap时候样式丢失的问题,可以通过三种方式解决?

前端在应用bootstrap时候样式丢失的问题,可以通过三种方式解决

  • 在public文件夹的index.html中的href路径中的.去掉
    <link rel="stylesheet" href="./css/bootstrap.css">
    变成:<link rel="stylesheet" href="/css/bootstrap.css">
    
  • 在public文件夹的index.html中的href路径中将.换成%PUBLIC_URL%
    <link rel="stylesheet" href="./css/bootstrap.css">
    变成:<link rel="stylesheet" href="%PUBLIC_URL%/css/bootstrap.css">
    
  • 将BrowerRouter变成HashRouter

2.路由的严格匹配和模糊匹配

1 路由的模糊匹配:Route要的路径不能少,可以多,且顺序要一致。
2 路由的精准匹配:Router标签中加入exact={true}开启严格匹配,路径必须一致才能匹配。
3 严格匹配不能随便开启,需要再开,有时候开启会导致无法继续匹配二级路由

3.Redirect的使用:

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

<Switch>
    <Route path="/about" component={About}/>
    <Route path="/home" component={Home}/>
    <Redirect to="/about"/>
</Switch>

4.嵌套路由的使用

1.注册子路由时要写上父路由的path值
2.路由的匹配是按照注册路由的顺序进行的

5.向路由组件传递参数

  • params参数
    ​ 路由链接(携带参数):<Link to=‘/demo/test/tom/18’}>详情
    ​ 注册路由(声明接收):
    ​ 接收参数:this.props.match.params
  • search参数
    路由链接(携带参数):<Link to=‘/demo/test?name=tom&age=18’}>详情
    注册路由(无需声明,正常注册即可):
    接收参数:this.props.location.search
    备注:获取到的search是urlencoded编码字符串,需要借助querystring解析
  • state参数
    路由链接(携带参数):<Link to={{pathname:‘/demo/test’,state:{name:‘tom’,age:18}}}>详情
    注册路由(无需声明,正常注册即可):
    接收参数:this.props.location.state
    备注:刷新也可以保留住参数

6.编程式路由导航

  • 借助this.prosp.history对象上的API对操作路由跳转、前进、后退
    this.prosp.history.push()
    this.prosp.history.replace()
    this.prosp.history.goBack()
    this.prosp.history.goForward()
    this.prosp.history.go()

7.BrowserRouter与HashRouter的区别

  • 底层原理不一样:
    BrowserRouter使用的是H5的history API,不兼容IE9及以下版本。
    HashRouter使用的是URL的哈希值。
  • path表现形式不一样
    BrowserRouter的路径中没有#,例如:localhost:3000/demo/test
    HashRouter的路径包含#,例如:localhost:3000/#/demo/test
  • 刷新后对路由state参数的影响
    (1).BrowserRouter没有任何影响,因为state保存在history对象中。
    (2).HashRouter刷新后会导致路由state参数的丢失!!!
    备注:HashRouter可以用于解决一些路径错误相关的问题。

8.antd的按需引入+自定主题

1.安装依赖:yarn add react-app-rewired customize-cra babel-plugin-import less less-loader
2.修改package.json

 "scripts": {
     "start": "react-app-rewired start",
​      "build": "react-app-rewired build",
​      "test": "react-app-rewired test",
​      "eject": "react-scripts eject"
 },

3.根目录下创建config-overrides.js

​          //配置具体的修改规则
​          const { override, fixBabelImports,addLessLoader} = require('customize-cra');
​          module.exports = override(
​            fixBabelImports('import', {
​              libraryName: 'antd',
​              libraryDirectory: 'es',
​              style: true,
​            }),
​            addLessLoader({
​              lessOptions:{
​                javascriptEnabled: true,
​                modifyVars: { '@primary-color': 'green' },
​              }
​            }),
​          );

4.备注:不用在组件里亲自引入样式了,即:import 'antd/dist/antd.css’应该删掉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西瓜程序设计

您的打赏将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值