react hook小案例
效果图
案例说明
使用mock数据完成嵌套表格的增删改查,两个表格主要是对菜单栏和右边内容区域的操作
代码说明
1.对axios进行一个简单的封装,创建一个api文件夹,可以在这个文件夹下面分不同的模块,写入对应的接口,这样调整起来也很方便
2.使用antd.design的table,实现嵌套表格,把里面的子表格可以拿出来单独当一个组件,写在一个页面,代码量太长,一个页面的代码最好不要超过200行,包括分页也做了个简单的封装,比如页面刷新时,页码总会跳到第一页,怎么能在刷新时停留在当前页
可以在地址栏增加一个hash值,通过分页的点击方法改变hash值
在使用的页面,获取hash值,传入useeffect里面,useeffect监听到参数变化之后就可以请求接口,在useEffect请求完数据之后使用set方法赋值的时候,会产生undefined的问题,因为useState是异步的所以在useeffect里面直接使用set方法赋值,对应的变量是拿不到值得,对于异步的问题,可以看看这个https://juejin.im/post/5dcb5a80e51d4520db19b906#heading-27
useEffect不希望回调函数返回Promise,而是希望不返回任何内容或返回一个函数。作为警告的解决方法,可以使用自调用异步功能
上面说的刷新页面分页的问题,现在说的是刷新页面,侧边栏会回到设置的默认选中key的位置,但是右边内容的显示并没有对应到相应的路由,所以可以使用useHistory记录路由,并且传入到侧边栏
在写修改表单的时候,觉得值传来传去特麻烦,于是写了一个redux,由于刚学习react,对于状态管理这一块并不熟悉,只知道一个redux,后来发现可以使用mobx或者context会更加的方便
通过触发action改变state
在点击编辑按钮的时候直接触发这个方法,把数据传进去
在需要的页面进行获取,这里我使用fromJS,所以要用toJS()转一下
在上传图片这一块,已经不再使用callback,需要返回一个promise