2020年5月


react hook小案例

效果图

首页展示

菜单列表

新增弹框

新增弹框

案例说明

使用mock数据完成嵌套表格的增删改查,两个表格主要是对菜单栏和右边内容区域的操作

代码说明

1.对axios进行一个简单的封装,创建一个api文件夹,可以在这个文件夹下面分不同的模块,写入对应的接口,这样调整起来也很方便

axios封装

api封装

2.使用antd.design的table,实现嵌套表格,把里面的子表格可以拿出来单独当一个组件,写在一个页面,代码量太长,一个页面的代码最好不要超过200行,包括分页也做了个简单的封装,比如页面刷新时,页码总会跳到第一页,怎么能在刷新时停留在当前页

image-20200531113038810.png

可以在地址栏增加一个hash值,通过分页的点击方法改变hash值

image-20200531114012311.png

在使用的页面,获取hash值,传入useeffect里面,useeffect监听到参数变化之后就可以请求接口,在useEffect请求完数据之后使用set方法赋值的时候,会产生undefined的问题,因为useState是异步的所以在useeffect里面直接使用set方法赋值,对应的变量是拿不到值得,对于异步的问题,可以看看这个https://juejin.im/post/5dcb5a80e51d4520db19b906#heading-27
useEffect不希望回调函数返回Promise,而是希望不返回任何内容或返回一个函数。作为警告的解决方法,可以使用自调用异步功能
image-20200531114613091.png

上面说的刷新页面分页的问题,现在说的是刷新页面,侧边栏会回到设置的默认选中key的位置,但是右边内容的显示并没有对应到相应的路由,所以可以使用useHistory记录路由,并且传入到侧边栏

image-20200531115642589.png

在写修改表单的时候,觉得值传来传去特麻烦,于是写了一个redux,由于刚学习react,对于状态管理这一块并不熟悉,只知道一个redux,后来发现可以使用mobx或者context会更加的方便

image-20200531115917079.png

image-20200531115949624.png

通过触发action改变state

image-20200531120043428.png

在点击编辑按钮的时候直接触发这个方法,把数据传进去

image-20200531120216339.png

在需要的页面进行获取,这里我使用fromJS,所以要用toJS()转一下

在上传图片这一块,已经不再使用callback,需要返回一个promise

image-20200531120427795.png


Author: wxy
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source wxy !
  TOC