react脚手架、懒加载、路由配置、路由跳转、路由重定向、样式隔离、代理服务器

1.使用node创建react项目

1.1, 安装react代码行工具(脚手架)

​ npm install -g create-react-app

1.2,创建一个react应用程序, my-app是自定义项目名

​ create-react-app my-app

1.3,启动react项目 (需要cd进入项目my-app根目录)

​ npm start

注意:在使用create-react-app来创建一个新的React应用,在拉去各种资源时,往往会非常慢,一直卡在那,因为医院还是使用了npm下载的,我们可以换成淘宝的资源,执行指令。

npm config set registry https://registry.npm.taobao.org

问题:安装脚手架报错:The fs.promises API is experimental

原因:npm版本过高或node版本过低

解决:npm i npm@6.4.1 -g

2.样式隔离的使用

在react组件中,默认所有的样式文件都是全局作用域,不存在样式隔离

2.1 方法一:根标签选择器限制

如果需要每个组件样式隔离,在设置组件样式时,每一个选择器都添加组件根标签选择器,以区分不同组件中的样式

2.2 使用CSS Modules css模块化
2.2.1, 创建组件样式文件时以 xxx.module.css命名, 例如 Home.module.css 代替 Home.css
2.2.2, 在组件jsx导入样式文件时使用 import styles from ‘./xxx.module.css’ 导入 代替 import ‘./xxx.css’
2.2.3, 在组件中需要设置样式的标签上添加class值, className={styles.yyy} 其中yyy指的是css样式中的class值
2.2.4, 在xxx.module.css中通过 .yyy{} 设置样式,即为局部样式

3.React项目配置代理

3.1, 下载安装代理模块

​ npm install http-proxy-middleware --save

3.2, 在src目录中新建setupProxy.js文件,在文件中放入如下代码(注意是src目录,不是根目录):

const { createProxyMiddleware } = require(‘http-proxy-middleware’)

module.exports = function (app) {
app.use(createProxyMiddleware(‘/api’,
{
target: ‘http://127.0.0.1:3000’,
changeOrigin: true,
pathRewrite: {
“^/api”: “”
}
})
)
}

4.react图片懒加载模块

4.1, 下载安装懒加载模块

​ cnpm i react-lazyload --save

4.2, 在src/assets/目录下放入懒加载占位图 placeholder.gif
4.3, 在需要使用懒加载的组件中导入懒加载模块和占位图

​ import LazyLoad from ‘react-lazyload’;
​ import placeholder from “…/…/asset/placeholder.gif”

4.4, 在组件rander函数中创建占位图片标签img

​ var holderImg =

4.5, 在组件模板中给需要懒加载的图片添加LazyLoad父标签


这是一个图片

5.react路由配置

提示: 此教程使用react-router 5.x 版本实现

5.1, 下载react的路由模块

​ npm install react-router-dom@5 --save

5.2, 在入口文件 src/index.js中,从路由模块导入工具组件Router ,并包裹根组件

​ import { HashRouter } from ‘react-router-dom’
​ ReactDOM.render(


​ ,
document.getElementById(‘root’)
​ );

5.3, 创建路由文件src/router/index.js, 并从路由模块中导入工具组件Route

​ import { Route, Switch } from “react-router-dom”;

5.4, 创建路由组件,配置路由, 并导出

​ export default function MyRouter(){
​ return(



​ )
​ }

5.5, 在app.js中导入路由组件

​ import RouterView from ‘./router/index’;

5.6, 在根组件app模板中添加路由组件,即路由出口

5.7, 在需要跳转的页面, 从路由模块导入工具组件 Link

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

5.8, 使用Link组件执行路由跳转

​ 首页/Link>

6.精确匹配

主页路由要加exact精确匹配,因为每一个路径都有/,不精确下,都会匹配主页。正常路由建议加exact,动态路由因为路径不固定,不能加exact。

7. 路由重定向

redirect 用于路由重定向,可以不写精确匹配

8.路由跳转的两种方式

8.1 link路由跳转

如果需要用到link路由跳转,需要先导入Link工具组件

import {Link} from “react-router-dom”;

link路由跳转同vue的router-link相似,不过link路由跳转也需要定义to属性

   <Link to="/">今日新闻</Link>|
   <Link to="/last">昨日新闻</Link>
8.2 编程式导航跳转

由于HashRouter路由组件包裹了根组件App,所以HashRouter就是所有组件的父组件,当路由跳转时HashRouter这个父组件会像跳转的子组件页面props中传入路由数据

路由跳转的页面组件会传入三个路由信息:history、location、match

  • history:拥有路由处理函数,实现路由的跳转和路由的监听
  • location:拥有路由信息,主要用于路由传值
  • match:拥有路由信息,也可以用于路由传值

所以,编程式导航主要是在history字段中的push来实现编程式导航跳转

props.history.push(“/home”)

9.路由重定向

实现路由重定向之前,需要导入Redirect这个模块

import { Redirect} from “react-router-dom”;

使用路由重定向:

今日新闻
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值