Dva一点都不好用

#1

       这阵子维护一个前人写的Dva项目,项目中都是无状态组件,所有状态都是Dva redux在维护,前面写的人不嫌麻烦吗?知道后期维护多艰难吗?找个组件状态,还非得去model中找,要是找数据的获取,更麻烦了,还得找它的service层,改个东西吧!感觉都得改,改起来也麻烦,组件也一点都不直观。
       把简单东西写复杂傻子都会做,把复杂的东西简单化,才是程序员该追求的啊!

#2

vuex ,redux, mobx,dva,angular 的service都是这样用的,你要是体验不到model,service的好,那说明你水平还不够,经验不够多。

#3

我并不是说vuex,redux不好用,准确的说dva前人用的不好,我觉得dva的作用是更好的管理共享状态,把组件的所有状态都放入到dva的model管理不是很好,繁琐了代码,模糊了逻辑,另外个人觉得前端采用MVC的模式管理不是很好,MVVM和MVN*我觉得比较好,MVC比较适合后端,作为前端,因为和UI相关,MVC使得代码不直观

#4

也不是所有的状态,大部分的状态就行。UI的状态放在组件内部比较好,但是从接口获取的数据的就应该放在model里,包括这些发起数据请求的逻辑都放到model里做已经是最佳实践了。dva的思路跟vuex基本一致,也算是两个大佬的实践总结吧。另外dva不总是只能把数据放在model,你可以把发起请求的逻辑及数据处理逻辑放在model里做,但是最后的数据return 一下,流转到组件内部也是可以的,这种做法就能保证数据既可以作为全局的又可以作为组件私有的,随时可以切换流转一下就行。

#5

接口获取的数据全放到model我觉得不好,我始终觉得redux只是为了组件之间数据传递复杂的一种实现,redux存放的应该是一些共享状态,如果只是一个普通的请求放入到model里面,我觉得有两点不是很好:1. 组件的复用性,放入到model之后,组件的状态就依赖model了,如果需要复用,那么model也需要复制一遍,当然不复制共用也行,但某些情况确实会破坏一定的复用性, 2. 由于状态由model管理,那么在组建销毁的时候,还得同时销毁model里面的数据

1 Like
#6

我有点同意你的看法,还有在model里面做路由监听进行请求也不太好,
这跟每个人的写法有关系
个人推崇model里面只做共享数据存放,可以跨model复用
请求还是放在router里面在生命周期方法里面触发比较好

#7

嗯嗯,dva也不好控制请求的状态,但是解除了Umi,nuxt以及服务端渲染,突然才觉得,dva或许是适合ssr的项目,路由对应model,无状态组件,mvc模式,妥妥的后端模式啊!目前对ssr了解不是很多,但我觉得dva就是用来做ssr的啊!