社会治安管理项目总结

这是我做的第二个项目,相比于之前,对一些新的知识有了了解,下面就把自己在这个项目中遇到的问题进行总结。

一、首先是实现一个卡片组件,由于antd design没有提供自动生成多个卡片的组件,又需要再不同的页面使用不同的卡片,于是只好自己写。样子是下面这样。

  • 一个需求是点击卡片就拿到这条卡片的信息,由于Card没有提供这样的功能,于是只好在自动生成的时候将每一条数据存入点击事件的参数中,有点类似于闭包。
  • 第二点是上面使用的是箭头函数而没有直接写里面handleClick部分是由于如果直接写this.props.handleClick(current)部分相当于立即执行,因此不能这样写。
  • 第三点是由于整个卡片下面还有可配置的点击菜单,于是会发生事件处理模型里面的冒泡,因此需要用event.stopPropagation()阻止冒泡

二、第二是一个自动生成的Modal

  • 在自动生成的时候应该尽量避免将生成函数放在render函数里面,因为由于react的刷新机制会导致不断重复调用生成函数,如果生成函数不复杂还好,如果一复杂起来就就特别耗时,因为每刷新一次就调用一次生成函数,而且每个生成函数又耗时,我当时是直接卡死了崩溃了。

三、学到的一些新的知识点

  • loading: loading可以用来监听我们的XHR,当我们的异步请求结束后会返回fasle,它既可以监听单个effects也可以监听整个Model.
loading1: loading.models.xxx,
loading2: loading.effects['xxx/xxx'],
  • dva的subscription:这个其实是一个特别耗时的方法,因为当我们刷新页面的时候,会对整个项目进行subscription,如果写不好,会出现其他页面也出现本页面的请求,效率比较低,所以一般我们在componentDidAmount这个生命周期里面去完成一些页面初始化的东西.
  • antd pro的路由注册:一旦当我们需要新增容器的时候,都需要在路由里面配置我们的路由。
  • pathToRegexp:这个其实是一个当我们需要解析路由的时候使用到的库,前面会返回一个正则表达式,后面使用exec执行返回一个match对象
const matchEdit = pathToRegexp('/gridInfoManage/areaEdit/:id').exec(location.pathname)
  • routerRedux:这个其实push的是一个location对象,location对象的属性有pathname、state、query、search。我们可以使用除pathname之外的属性向下一个页面传递数据,但是有一个缺点是一旦页面刷新,除了pathname之外其他的都会被置为空,尽量避免这样做。我是通过url传递参数再去另外一个页面使用ajax再获取一次需要的数据
  • service层的写法: 以前写service层的时候,会有很多冗余的代码,现在觉得下面这样写的方法很好。

猜你喜欢

转载自blog.csdn.net/Her_smile/article/details/81077312
今日推荐