react-loadable
React 项目打包时,如果不进行异步组件的处理,那么所有页面所需要的 js 都在同一文件中(bundle.js),整个js文件很大,从而导致首屏加载时间过长。
所有,可以对组件进行异步加载处理,通常可以使用 React-loadable
。
1 | 一个高阶组件与动态加载组件进口。 |
history
1 | 实现非 React 组件在页面路由跳转, |
babel-plugin-import
1 | 按需加载 |
antd
1 | //1、 自定义antd 主体颜色 |
@craco/craco
1 | 在不暴露 react 配置项的情况下修改 webpack 配置项 |
react-photo-view
1 | react-photo-view 拥有无与伦比的预览交互体验:从打开图像开始,每一帧的动画、细节和交互都经过了精心设计与反复调试,媲美原生图片预览的效果。 |
styled-components
css in js
- 贯彻React的 everything in JS理念,降低js对css文件的依赖
- 组件的样式和其他组件完全解耦,有效避免了组件之间的样式污染
安装:
1
npm install --save styled-components
全局样式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49// style.js
import { createGlobalStyle } from 'styled-components'
export const GlobalStyle = createGlobalStyle`
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
`;然后在项目的入口文件(index.js)中
将其放在render函数的第一个html标签内部
1 | import React, { Fragment } from 'react'; |
局部样式
对于一个特定的组件,我们可以事先在render函数中,用组件的命名方式替换原本的div等标签
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25import React, {Component} from 'react'
import {
HeaderWrapper,
Nav,
NavItem
} from './style'
class Header extends Component {
render() {
return (
<HeaderWrapper>
<Nav>
<NavItem className='left active'>首页</NavItem>
<NavItem className='left'>下载App</NavItem>
<NavItem className='right'>登陆</NavItem>
<NavItem className='right'>
<span className='iconfont'></span>
</NavItem>
</Nav>
</HeaderWrapper>
)
}
}
export default Header然后在同目录下的style.js中编写具体的CSS样式,以组件名的形式导出
1 | import styled from 'styled-components' |
nprogress
页面顶部进度条,用来代替加载中动画。使用时记得引入样式,否则进度条不显示。
Immer
更新嵌套对象,数组时,可以不用结构赋值繁琐操作
1 | import { useImmer } from 'use-immer'; |
使用 useImmerReducer 优化 Reducer
1 | import { useImmerReducer } from 'use-immer'; |
react-router-dom 与 react-router-dom 区别
都是路由管理的插件,它拓展了一下在浏览器环境下运行的一些功能。
react-router-dom 依赖 react-router 。安装了前者就不用再安装后者
x
Router 默认是模糊匹配, Switch 只能匹配其中第一个
1 |
|
redux-persist
redux 数据持久化
ahooks
ahooks 是一套开源的 React Hooks 库,封装了大量好用的 Hooks。在当前 React 项目研发过程中,一套好用的 React Hooks 库是必不可少的,希望 ahooks 能成为您的选择。
react 的状态管理
Redux
、
Recoil、还有 React 自带的
useContext+
useReducer
recoil
>useContext + useReducer
>Reudx
>其他
ScratchCard
一个刮刮卡的 React 组件。
react-hot-toast
官网,一个提示组件。样式很好看
react-tooltip
官网,react 内容提示组件。一般不会单独使用,优先考虑UI库中的组件
Graphin
Graphin 取名意为 Graph Insight(图的分析洞察),是一个基于 G6 封装的 React 组件库,专注在关系可视分析领域,简单高效,开箱即用。
tldraw
一个 React 组件,帮你实现一个网页画板。
react-resizable-panels
分屏可拖拽调整宽高比例
1 | <PanelGroup direction="horizontal"> |
react-dnd
实现拖拽的库
css in js 之 styled-components
定义样式得同时生成一个react 组件,还支持变量,继承等特性
1 | import React, {Component} from 'react'; |
ReactMarkdown remark.js
markdown 格式处理转成 html,remark-math 插件 支持 KaTeX 公式数学公式
1 | import React from 'react'; |
reactUse
跟 vue-use 一样的,hooks 库
react-helmet
这个可重复使用的 React 组件将管理您对文档头的所有更改。动态修改head标签中的内容
1 | import React from "react"; |
react-pdf.org
Create PDF files using React.
1 | import React from 'react'; |
- 本文作者: 王不留行
- 本文链接: https://wyf195075595.github.io/2022/06/17/programming/react/plugin/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!