组件封装、函数传参思想


1.新建、编辑、查看(详情)可以共用一个弹框,将弹框封装成一个组件,通过父子组件之间传值,根据有无id辨别是新增(无)还是回显(有),根据是否可以编辑(可以定义一个变量isEdit,true或者false)辨别是编辑(可以修改)还是查看(详情)(不可修改)

2.保存、提交或者发布,可以调用同一个方法(通过传参)

3.表单中有进度条的时候,一般可以通过状态管理来存上一步的值,进行到下一步的时候,此时点击上一步,应该保留上一步填写的值,做法是:点击下一步的时候将上一步的值存到状态管理,回到上一步的时候,再从状态管理里面取出来回显

4.关于表单中附件的问题:上传的时候,先存到本地,最后表单提交的时候,再一起传给后台,存到本地会涉及到删除的问题,那么在上传的时候会随机生成一个uuid(不相同),在本地进行删除的时候再根据uuid进行删除,在表单回显的时候,根据附件id进行删除

5.关于表格的增删改查的问题(经常会出现的一个bug):

6.滚动条样式可以进行美化(主流浏览器:谷歌、火狐内核兼容写法)

7.头像回显的问题:如果接口有返回,则展示,若没有返回,则给定一个默认头像

8.二维码是前端生成,不是固定的,根据传入的参数生成

9.请求数据列表的时候,如果有返回,则展示,如果没有,应该给一个默认的暂无数据(最好是图片)展示给客户,从客户的角度来看,没有数据的情况下若不显示暂无数据,不知道什么情况

10.可封装组件:上传、面包屑、表单、表格

11.关于组件时间框:第一,表单中判断时间大小,用自定义校验,moment的diff算法(duration)切记需要callback,不然会在表单提交的时候提交不了,因为表单提交是等所有校验走完以后才走提交方法; 第二,表单提交的时候,一定要用标准的时间格式传给后台,moment(value).format('YYYY-MM-DD')

12.几点需要注意:第一,请求数据最好是有loading效果;  第二,遇到输入框和文本域等,注意字数的限制; 第三,标题过长,应该用省略号显示,并且鼠标悬浮展示所有; 第四,注意表单的必填校验; 第五,删除一般需要二次确认

13.表格的翻页选中,以及回显效果,可以根据选中的key值来判断

14.系统的整体风格,可以统一修改,通过加载公共的css,例如按钮颜色、导航颜色、表单表格样式,便于后面修改

15.载入模板需要调接口,后台会返回一个html标签,前端解析即可

1.控制台不报错
2.每一个遍历的组件需要加key值
3.父组件传值给子组件,需要监听,重新渲染
4.页面代码过多,尽量拆分
5.地址栏传参封装函数
6.form表单默认值可以用于回显
7.新建、编辑、查看可以用于一个组件
8.正则表达式共用
9.样式放在less中,尽量不放在元素中
10.去除页面的打印日志+断点+注释+无用的代码
11.一个方法中尽量写 一个setState,写多个耗性能
12.参数有则传,无则不传,不要传undefined,需要判断
13.表格状态可以封装成一个方法,直接判断return
14.代码尽量保持严谨,尽量用三等
16.获取浏览器地址(动态地址):window.location.origin
17.关闭弹框,清除选择,用弹框的destroyOnClose属性
18.在a分支上面提交了代码,想要把提交的文件同步到b分支,则打开b分支git cherry-pick 325d41(a分支提交历史的id)
19.setState不要在循环里面设置,可以在循环外面设置一个变量,循环时若条件符合,则改变变量的值,循环完毕之后,根据变量的值去setState
20.用的比较多的判断方法可以封装,直接传参即可,引用
21.尽量拆分页面、便于查找和渲染,直接组件传值即可
22.变量尽量写在类前面,比如表格的表头定义
23.组件传值可以通过一个对象去传值
24.表单页面过多,可以存状态管理,在页面离开的时候,情况状态管理里面的值,componentWillUnmount(离开页面)
25.componentWillReceiveProps更新数据,类似监听,常用于父子组件之间传值,this.props代表上次,nextProps代表这次
26.接口返回的时候,不要直接定位到理想状态下的字段,需要多加判断是否存在
27.将字符串转成对象的时候,需要判断有没有,再用JSON.parse,否则会报错(常用于取缓存)
28.Promise.all处理多个异步问题,同时请求一起渲染
29.传参时间格式,应该是正常的年月日时分秒,用moment().format('YYYY-MM-DD')
30.antd时间组件默认值不是字符串,null或者undefined,避免报错
31.antd弹框modal组件destroyOnClose属性关闭弹框时销毁元素,先编辑再添加,应该清空表单的值,不用该属性,添加时会保留上一次的编辑记录
32.有时间可以学习一下ref
33.moment.diff算法,对时间进行计算,duration常用于表单的自定义验证
34.map和forEach方法区别
35.编译速度优化
36.合并对象用{...a,...b},合并数组[...a,...b]
37.学习lodash
38.姓名按首字母排序chinese-to-pinyin包
39.选择人员,搜索或者翻页保留上一次的记录
40.数组归类
41.antd表单可以单独对某些字段进行验证必填,分开保存会用到
42.this.forceUpdate()强制刷新
43.shouldComponentUpdate检测state中字段是否有改变,每次setState一次,页面会重新渲染一次,该函数可以阻止页面重新渲染
44.下载图片压缩包
45.网页水印+生成表格可以编辑(可下载+水印)、、、、网页预览插件+水印
46.H5
47.Prompt使用
48.深浅拷贝